Oracle,DB2,ActiverDirectoryで分散トランザクション

先日来の業務アプリ。
oracleDB2/400のテーブルとActiveDirectoryを更新するアプリケーションで
3テーブルをトランザクション管理する。
勉強不足でActiveDirectoryは管理外。更新順をDB2→oacle→ADとすることで
DB2oracle、ADの更新処理でのexception発生時はrollback可能にした。
ただコミット時のエラーではADのみ更新されてしまう。
調査を継続せねばならない。
トランザクション管理の設定については、
こちらの12.2.7 トランザクション管理戦略を参考。
framework:struts1.2,spring(2.5.6)、ORM:Hibernate、Webコンテナ:tomcat6を利用。
(applicationContext.xml)














java:comp/env/jdbc/Db2DataSource



java:comp/env/jdbc/Oracle









jp/co/pioneer/kwg/password_chg_hibernate/access/E32hbm.xml




org.hibernate.dialect.DB2400Dialect










jp/co/pioneer/kwg/password_chg_hibernate/access/User_Masterhbm.xml




org.hibernate.dialect.Oracle9Dialect




java:comp/UserTransaction








traceInterceptor














traceInterceptor










traceInterceptor













PROPAGATION_REQUIRED







traceInterceptor




















PROPAGATION_REQUIRED









traceInterceptor













コンテナのJTAサブシステムに移譲するので、
tomcatのserver.xml,\conf\Catalina\localhost\(project名).xmlに設定。
勉強不足で、なぜかserver.xmlと\conf\Catalina\localhost\(project名).xmlの2つに分けて記述しないとエラー発生。

server.xml



\conf\Catalina\localhost\(project名).xml




最後にtomatでは、JTAの実装がないので、オープンソースのJOTMを利用してJTAを利用。
こちらを参考にして、JTAの実装をインストール。