[Seasar-user:21587] Re: WebSphere環境でトランザクションのresume, suspendがサポートされない

Y.Uzawa [E-MAIL ADDRESS DELETED]
2013年 4月 3日 (水) 11:25:34 JST


小林さん

いつもお世話様です。鵜澤です。

> また、TransactionSynchronizationRegistry は
> suspend/resume とは関係がありません。

 WAS6TransactionSynchronizationRegistryがUOWManagerをプロパティとして
 持っているので、UOWManagerの下で新規トランザクション管理ができるのでは
 と考えたのですが、そうするにしてもアプリ側がUOWActionを実装しないと
 いけないし、ビジネスロジックがIBMにロックインされますもんね。。
 浅はかでした。
 
> WAS では TransactionManager は
> サポート対象外 (存在するが、使うとサポートを
> 受けられない) です。

 知りませんでした。詳しく調べてみようと思います。
 そもそもTransactionManagerは開発者がAPIレベルで制御することを想定して
 作られて無いし当然といえば当然ですね。

> Hibernate との関連は意味が分かりません。
> 通常の使い方で Hibernate が suspend/resume を
> 呼び出すことがあるとは思えませんが。。。

 Hibernateの2ndレベルキャッシュにJbossのTreeCacheを利用した場合、
 このキャッシュのメカニズムではキャッシュのget、putの前後で
 TransactionManager#suspend, resumeを利用してるんです。
 なので動かなくなるかなと。当方は2ndレベルキャッシュにEhCacheを
 利用しているので該当はしないのですが、気になったので。

 とはいえTransactionManagerLookupでHibernateに渡すトランザクション
 マネージャを拡張できるんでなんとでもなりますが。

以上よろしくお願いします。


2013/04/02 21:30:00 Koichi Kobayashi <koichik @ improvement.jp> wrote.
> 小林 (koichik) です.
> 
> >  1.対応予定はあるかどうか
> 
> ありません。
> トランザクションの suspend/resume をするには
> TransactionManager が提供する API を使う必要が
> ありますが、WAS では TransactionManager は
> サポート対象外 (存在するが、使うとサポートを
> 受けられない) です。
> 代わりに WAS 独自の UOWManager を使う必要が
> ありますが、これは suspend/resume ができません。
> 
> また、TransactionSynchronizationRegistry は
> suspend/resume とは関係がありません。
> これはトランザクションがコミットまたはロールバック
> された時に呼び出されるコールバックを登録するだけです。
> 
> 
> >  2.resume、suspendの代替手段について
> 
> RequiresNew を使ってください。
> 
> Hibernate との関連は意味が分かりません。
> 通常の使い方で Hibernate が suspend/resume を
> 呼び出すことがあるとは思えませんが。。。
> 
> 
> On Tue, 2 Apr 2013 15:43:43 +0900 (JST), "Y.Uzawa" <uzawa @ worksap.co.jp> wrote:
> 
> > お世話になっております。鵜澤です。
> > 
> >  s2-extensionに同梱されているWebSphere用のjta-was6.dicon, jta-was7.dicon
> >  を利用する場合、トランザクションマネージャの実態は
> > 
> >    RestrictedTransactionManagerImpl
> > 
> >  ですが、このトランザクションマネージャはresume, suspendをサポートして
> >  いないと思います。この件に関して質問させてください。
> > 
> >  1.対応予定はあるかどうか
> > 
> >   TransactionSynchronizationRegistryを内部で利用していらっしゃるので
> >   対応すること自体はできると思いますが、なにかポリシーがありますでしょうか?
> > 
> >  2.resume、suspendの代替手段について
> > 
> >   代替と言うかそもそも、これらのAPIを利用する場合はコンポーネントを
> >   j2ee.requiresNewTxでアスペクトして利用するのが正しいということ
> >   でしょうか。
> > 
> >   しかしながら、HibernateがこれらのAPIを利用しているので、もしHibernate
> >   がこれらのAPIを利用するようなシーンの場合に、問題があるのではないかと
> >   考えています。(Hibernateでどのようなシーンで必要とされるかまでは
> >   わかっていないですが。)
> > 
> > 以上よろしくお願いいたします。
> > _______________________________________________
> > Seasar-user mailing list
> > Seasar-user @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> 
> -- 
> {
>   name: "Koichi Kobayashi",
>   mail: "koichik @ improvement.jp",
>   blog: "http://d.hatena.ne.jp/koichik/",
>   twitter: "@koichik"
> }
> 
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


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