1. JOTMを下記サイトの「Downloads」ページよりダウンロードします。
2. JOTMのパッケージに同梱されているlibサブディレクトリ内の全ての.jarファイルを、Tomcatの$CATALINA_HOME/common/libにコピーします。
3. 必要なJDBCドライバの.jarファイルも$CATALINA_HOME/common/libにコピーします。
-----(ここから)-----<Resourcename="jdbc/Xxxx"type="javax.sql.DataSource"auth="Container"factory="org.objectweb.jotm.datasource.DataSourceFactory"username="xxxx"password="xxxx"/><Resourcename="UserTransaction"type="javax.transaction.UserTransaction"auth="Container"factory="org.objectweb.jotm.UserTransactionFactory"jotm.timeout="60"/>-----(ここまで)-----
5. 対象アプリに関する<Context>要素に、下記例に倣って<ResourceLink>子要素を追加してください。
-----(ここから)-----type="javax.sql.DataSource"/><ResourceLink name="UserTransaction" global="UserTransaction"/>-----(ここまで)-----
※nameとglobalは、特に理由が無いなら同一としておくのが無難です。
6. 次のようなコードでUserTransactionの取得を実行したときに、示すような例外が発生した場合、おそらくWebアプリケーションのWEB-INF/libにJOTM以外のJTAの実装コードが含まれています。典型的には"geronimo-jta_1.1_spec-X.X.X.jar"が疑われます。その.jarを除去してください。
【コード】-----(ここから)-----Context ctx = new InitialContext();UserTransaction tx =(UserTransaction)ctx.lookup("java:comp/UserTransaction");-----(ここまで)-----
【例外】-----(ここから)-----java.lang.ClassCastException: org.objectweb.jotm.Current cannot be cast to javax.transaction.UserTransaction-----(ここまで)-----
■ 備考
- ここには<GlobalNamingResources>に<Resource>子要素を記述する方法の場合を示しましたが、<Context>要素内に<Resource>子要素を記述する方法でも同様です。
- ここに示した手順はTomcat 5.5+JOTM 2.1.9で実績があります。
■ 参考文献