[Seasar-user:22022] Re: WAS8.5に対応するjta.diconの設定について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2015年 1月 7日 (水) 03:41:21 JST


小林 (koichik) です。

これまでもWASが提供するTransactionManagerが
suspend/resumeに対応していなかったわけではなく、
WASのTransactionManagerを使うとIBMさんのサポートを
受けられなくなるので使わないようになっているだけです。
# 少なくともWAS7までは。

http://s2container.seasar.org/2.4/ja/transaction.html

上記ドキュメントの注1にそのことが書いてあります。

そのためjta-was6.diconやjta-was7.diconでは
WASのTransactionManagerではなくUOWManagerを
利用するようになっています。

http://www.ibm.com/developerworks/jp/java/library/j_j-seasar02/index.html

RestrictedTransactionManagerImplは、WASの
UOWManagerとTransactionSynchronizationRegistryを
利用した実装で、限定的ながらTransactionManagerの
APIを利用するためにS2で用意しているものです。
これは確かにsuspend/resumeに対応していません。

しかし重要なこととして、REQUIRES_NEWを含む
S2Txの宣言的トランザクションは、TransactionManagerを
直接利用しているのではありません。

S2TxはTransactionManagerAdapterを介してトランザクション
制御を行います。
そしてWAS6〜用のWAS6TransactionManagerAdapterは
TransactionManagerではなくUOWManagerを使うため、
REQUIRES_NEWに対応しています。

http://www.ibm.com/developerworks/jp/java/library/j_j-seasar03/index.html

よって、

> WAS6.1.0.7では、APサーバのtransactionManagerがsuspendメソッド/resumeメソッドに対応していないため、
> REQUIRES_NEWの処理は、前処理を一旦コミットして、トランザクションを開始するという風に
> JTAUserTransactionAdapterの子クラスでカスタマイズして使っておりました。

この辺りの背景は理解できません。
何か誤解をされているように思います。

>   <component name="TransactionManager" class="org.seasar.extension.jta.TransactionManagerImpl"/>

これはS2のトランザクションマネージャであって
WASのコネクションプールとは連携しません。
suspend/resumeの動作を確認したということは、
コネクションプールはS2DBCPを使ったのでしょうか?
本来なら以下のようにWASのコネクションプールを
JNDIで取得するべきなのですが。。。

http://s2container.seasar.org/2.4/ja/jdbc.html#GenericApplicationServer

もしS2DBCPを使っているなら、JTAもS2のもの
(jta.dicon)をそのまま使えばいいだけですが、
WASを使ってるならコネクションプールもWASの
ものを使いますよね? これらは

S2JTA + S2DBCP
APサーバのトランザクション制御 + APサーバのコネクションプール

のどちらかでないと正しく動作しません。

> 質問1:次のURLを見る限り、Seasar2のWAS8.5への対応は言及されていませんが、
> WAS8.5に対応するjta.diconの設定はサポートされていますか。
>     サポートされているならば、どのように設定すればよいかをご教示頂くことは可能でしょうか。

ベンダが提供しているプロダクトではないので、
動作しないという報告をこのMLかGitHubのissueに
頂ければ可能な限り調べて対応するという感じです。
その場合、調査や動作確認は報告頂いた方にお願いを
することになる可能性が高いです。

> 質問2:WAS8.5はJavaEE6対応のはずですが(※1)、UOWManagerの対応は必要なのでしょうか。

前述のように、TransactionManagerはアプリが利用する
APIではなく、WASの内部で利用するSPIというのが
IBMさんの立場なので、UOWManagerを使うしかありません。
# WAS8以降で変わってなければ


On Mon, 5 Jan 2015 10:39:55 +0000, <futoshi.yoshizaki @ accenture.com> wrote:

> 吉崎と申します。
> 
> フレームワーク:Teeda+S2JDBC/APサーバ:IBM WebSphere Application Server version 6.1.0.7で稼働しているWebアプリケーションを、
> WAS8.5に移行することになりました。
> 
> そこでお伺いしたいのですが、WAS8.5に対応したjta.diconの設定についてお伺いしたく存じます。
> 
> 質問の背景を説明させて頂きますと次の通りです。
> WAS6.1.0.7では、APサーバのtransactionManagerがsuspendメソッド/resumeメソッドに対応していないため、
> REQUIRES_NEWの処理は、前処理を一旦コミットして、トランザクションを開始するという風に
> JTAUserTransactionAdapterの子クラスでカスタマイズして使っておりました。
> 
> WAS8.5に移行するに当たり、
> JavaEE6完全対応ということですので、このカスタマイズクラスを使用せずに、jta-was7.diconで行けるのではなかろうかという
> 見積りで実現性の検証した所、jta-was7.diconで指定されているRestrictedTransactionManagerImplではREQUIRES_NEWの処理が
> 動かないという事実を確認いたしました。
> 
> そこで、jta-was7.diconをコピーしてjta-was8.diconというファイルを新規に用意し、transactionManagerの実装を
> 次のように変更して、シンプルパス・リゾルバでjta.diconの実体にjta-was8.diconを指定して、
> WAS8.5で動かしてみたところ、REQUIRES_NEWで言うところのtransactionManagerのsuspendメソッド/resumeメソッドが
> 想定通りに動くことを確認しました。
> 
>   <component name="TransactionManager" class="org.seasar.extension.jta.RestrictedTransactionManagerImpl"/>
>>   <component name="TransactionManager" class="org.seasar.extension.jta.TransactionManagerImpl"/>
> 
> ここで2点質問です。
> 
> 質問1:次のURLを見る限り、Seasar2のWAS8.5への対応は言及されていませんが、
> WAS8.5に対応するjta.diconの設定はサポートされていますか。
>     サポートされているならば、どのように設定すればよいかをご教示頂くことは可能でしょうか。
> 
> 質問2:WAS8.5はJavaEE6対応のはずですが(※1)、UOWManagerの対応は必要なのでしょうか。
> 
> 
> ※1
> http://public.dhe.ibm.com/software/dw/jp/websphere/was/was85_first/was85_first.pdf
> P6「全てのエディションで Java EE 6 / Java SE 7 をサポートしており」
> 
> ご回答のほど、何卒、宜しくお願いします。
> 
> ________________________________
> 
> This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy.
> ______________________________________________________________________________________
> 
> www.accenture.com


-- 
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
}



Seasar-user メーリングリストの案内