1.什么是JOTM
JOTM (Java Open Transaction Manager)是由ObjectWeb协会开发的功能完整的且资源开放的独立的事务管理器。
它提供了 JAVA 应用程序的事务支持,而且与 JTA( JAVA 事务 API)兼容。您可以在JOTM home page了解到更多的详细信息。
在 TOMCAT(或其它 Servlet 容器)整合了 JOTM 后,JSP 和 servlet 的开发者们就可以获得事务的优势轻而易举的创建更多
健壮的 web 应用程序。
2.为什么使用JOTM
JOTM 提供了以下性能,有助于增强 WEB 应用程序。
1.完全分布式事务支持.如果数据层、业务层、表示层运行在不同的 JVM 上,则有可能有一个全程的事务跨度这些JVM,事务的内容在 RMI/JRMP 和 RMI/IIOP 上传播。
2.整合 JDBC。使用的 XAPool例子就是一个 XA-兼容的 JDBC 连接池,可以与数据库相互操作。XAPool 类似于 Jakarta DBCP,只是增加了 XA-兼容的特征,如果要结合 JDBC 使用 JTA 事务就必须遵从这个特征。
3.整合 JMS。JOTM 可以结合 JORAM,由ObjectWeb 协会开发的“JMS 提供者”提供了事务的 JMS 消息。你可以得到出现在 servlet中同一事务的 JMS 消息发送件和更新的数据库。
4.WEB 服务事务。JOTM 提供了BTP(Business Transaction Protocol)、JOTM-BTP接口,它们用于在 WEB 服务中增加事务行为。
所有这些功能的样例和文档都可以在 JOTM 的档案和网站上找到。
3.JOTM现在的版本
2004-04-08: JOTM 1.5.3 released
4.JOTM的网址
5.JOTM的学习
JOTM提供了5个例子
分别是:
basic 基本的事物处理
jdbc 对jdbc的事物处理支持
jdbc-dist 分布式jdbc的事物处理,同时支持多个连接
jms 对jms的事物处理支持
tomcat 对tomcat的事物处理支持
6.运行例子需要修改的地方
(1)运行 RMI (没有修改)
rmiregistry -J-classpath -Jjotm.jar;jotm_jrmp_stubs.jar -J-Djava.security.policy=../config/java.policy
(2) 运行 JOTM
(在windows平台) 把冒号: 改为 ;
把connector-1_5.jar增加到classpath中
java -classpath jotm.jar;jotm_jrmp_stubs.jar;connector-1_5.jar;../config/ org.objectweb.jotm.Main -u UserTransaction
(3) 运行第一个例子
修改build.xml
=============================
修改前
====
<target name="run.rmi.jrmp" depends="compile,init"
description="--> run the example on RMI/JRMP">
<echo message="See README for more instructions" />
<echo message="" />
<java classname="BasicExample" fork="yes" failonerror="yes">
<arg value="UserTransaction"/>
<jvmarg value="-Djava.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory"/>
<jvmarg value="-Djava.naming.provider.url=rmi://localhost:1099"/>
<classpath>
<pathelement location="${basedir}"/>
<pathelement location="${lib}/jta-spec1_0_1.jar"/>
<pathelement location="${lib}/jotm.jar"/>
<pathelement location="${lib}/jotm_jrmp_stubs.jar"/>
</classpath>
</java>
</target>
=============================
修改后
====
<target name="run.rmi.jrmp" depends="compile,init"
description="--> run the example on RMI/JRMP">
<echo message="See README for more instructions" />
<echo message="" />
<java classname="BasicExample" fork="yes" failonerror="yes">
<arg value="UserTransaction"/>
<jvmarg value="-Djava.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory"/>
<jvmarg value="-Djava.naming.provider.url=rmi://localhost:1099"/>
<classpath>
<pathelement location="${basedir}"/>
<pathelement location="${lib}/jta-spec1_0_1.jar"/>
<pathelement location="${lib}/jotm.jar"/>
<pathelement location="${lib}/jotm_jrmp_stubs.jar"/>
<pathelement location="${lib}/connector-1_5.jar"/>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^________多了这一行
</classpath>
</java>
</target>
=============================
修改完后,运行
ant run.rmi.jrmp
(4) 运行其他例子参见例子目录下的readme文件
转自:http://blog.163.com/flying_heart/blog/static/9811907620091027956190/