memoっとくスマートフォン用の表示で見るmemoっとくこの広告は、90日以上更新していないブログに表示しています。2009-05-28Seasar2のJTA実装を使って分散トランザクションを試すSeasar2ずいぶんとSeasar2のJTA実装のコードを読んだりしてたんですが、その前に自分で使用した使い方を自身の頭の整理という面も含めましてまとめておこうと思います。見るふたたびこの本の4章のトランザクションのサンプルコードを使って分散トランザクションを試してたいと思います。Seasar2.4.34を使用しました。前に2.3系でこのサンプルコードで分散トランザクションを試したときのj2ee.diconはこんな感じでした。class="org.seasar.extension.dbcp.impl.DataSourceImpl"><arg>connectionPoolOra</arg></component></components>ここでは、OracleとPostgresqlという2つのXAなDataSourceを設定して、それを2つのConnectionPoolに明示的にDIしていて、そのConnectionPoolそれぞれを、これまた2つのdataSourceに明示的にDIしている。普通はDataSourceImplとConnectionPoolImplへのDIは、自動インジェクションされるので明示的に書く必要はないのですが、この場合はこうするのかなと思ってこうしたのでした。RuntimeException("ロジックエラー発生!");}このメソッドの始まりと終わりが境界になり、ちゃんと2つのリソースにたいしてひとつのトランザクションを実現することができてます。もんだいは、どういう仕組みでそうなっているのかってことで、内部的にはもちろんJDBCのsetAutoCommit()とかは呼ばれていたりして、その辺の流れを僕みたいなもが読んでいくのは結構大変だったりしたのですが結構根気よくやりました。その辺の仕組みについてはまた別の機会に整理したいと考えてます。今回、これをdiconファイル等含めてコピーして、2.4.34で動かしてみたら、xaDatasourceが複数あるよってエラーで落ちてしまったので、明示的に指定してあげててもどっかでなんかが起こってしまっているようです。それでどうしようかなって考えてこちらをみて、これ使ってやってみようとしたらできました。このサイトにあるように2つのdataSourceにたいして2つのdiconファイルを用意します。class="org.seasar.extension.dbcp.impl.DataSourceImpl"/></components>それら二つをjdbc.diconにインクルードします。class="org.seasar.extension.datasource.impl.SelectableDataSourceProxy"/></components>dataSourceを入れ替える感じのinterceptorを作ってあげます。"pos";}}このinterceptorをコンテナに登録します。ここでは自動登録機能は使っていません。class="sample.transaction.interceptor.InitializeDaoInterceptor"/></components>customizer.diconでDaoをカスタマイズするよう設定します。ps.executeUpdate();}finally{ps.close();}}finally{con.close();}}この場合、insert()メソッドでは、postgresにinsertにいくし、insertOracle()メソッドではOracleにinsertにいきます。これでビジネスロジッククラスでは先ほどと同様にS2TXでInterceptorを設定してあげれば分散トランザクションが実現できます。次回は分散トランザクションをSeasar2がどのように実現しているのかについて整理できればしたいと思います。16:26Seasar2のJTA実装を使って分散トランザクションを試すTweet広告を非表示にする関連記事2012-10-01随分前にOracleの検証をJunit使ってテストした時の垂れ流しコードのメモを一応貼っとこうもしかしたら何かに使う可能性があるかもしれないから。deployを試す前回の続きです。Seasar2.4は実際の業務で使ったことはなく、あ...2009-05-15Seasar2.3でいろいろと自動的なんで、今日はJTA関連ではなくて、Seasar2.3からあるけれども実...2008-09-22SpringとHibernateの連携をどうこうの前にSpringMVCってめんどくさい気がする。»プロフィールid:kijitoranekoメガネないと見えない。(1)月別アーカイブはてなブログをはじめよう!kijitoranekoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。