JOTM

来源:互联网 发布:知敬畏 守底线 强党性 编辑:程序博客网 时间:2024/05/16 07:37

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的网址

http://jotm.objectweb.org/

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/

原创粉丝点击