JOTMに触る
JOTM(Java Open Transaction Manager)は、ObjectWebで開発されているJTAのオープン実装です。
JOTMを使用することで、TomcatのようなJTAをサポートしないサーバでJTAによるトランザクション制御を行うことができます。
JTAを使った場合のメリット
・複数のリソースにまたがるトランザクションを制御可能。
・Javaの標準的な仕様である為、環境に依存しないトランザクション制御が可能。
実行環境 | Version |
---|---|
jdk | 1.5.0_01 |
jotm | 2.0.10 |
carol | 2.0.5 |
postgresql | 8.0 |
Jarのインストール
jotm-2.0.10を展開し、jarファイルを $TOMCAT_HOME/commons/lib へ配置する。
但し、ow_carol.jar はjotmに含まれるものでは正常に動作しない為、carol-2.0.5 へ
含まれるJarを使う。
使用するDBのJDBCのJarも併せて配置する。
- commons-cli-1.0.jar
- commons-logging.jar
- connector-1_5.jar
- howl.jar
- jotm.jar
- jotm_iiop_stubs.jar
- jotm_jrmp_stubs.jar
- jta-spec1_0_1.jar
- jts1_0.jar
- log4j.jar
- objectweb-datasource.jar
- ow_carol.jar
- xapool.jar
- postgresql-8.0.309.jdbc3.jar
carolプロパティファイルの作成
carol.properties ファイルを作成し、$TOMCAT_HOME/commons/classes へ配置する。
carol.rmi.activated = lmi carol.jndi.start = false carol.ns.start = false
コンテキストファイルの作成
以下のようにコンテキストファイルを作成し、$TOMCAT_HOME/conf/Catalina/localhost
へ配置する。
factory org.objectweb.jndi.DataSourceFactory username griffin password griffin driverClassName org.postgresql.Driver url jdbc:postgresql://127.0.0.1:5432/DB1 factory org.objectweb.jndi.DataSourceFactory username griffin password griffin driverClassName org.postgresql.Driver url jdbc:postgresql://127.0.0.1:5432/DB2 factory org.objectweb.jotm.UserTransactionFactory jotm.timeout 60
UserTransaction の取得方法
Object obj = lookup("java:comp/UserTransaction"); UserTransaction tx = (UserTransaction) narrow(obj, UserTransaction.class);