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 
		 
	 

web.xml の設定

 
	Postgres DataSource 
	jdbc/postgres 
	javax.sql.DataSource 
 

UserTransaction の取得方法

    Object obj = lookup("java:comp/UserTransaction");
    UserTransaction tx = (UserTransaction) narrow(obj, UserTransaction.class);

DataSource の取得方法

    Object obj = lookup("java:comp/env/jdbc/DB1");
    DataSource ds = (DataSource) narrow(obj, DataSource.class);
    Connection conn = ds.getConnection();