[Seasar-user:21592] Re: WebSphere環境でトランザクションのresume, suspendがサポートされない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2013年 4月 4日 (木) 01:00:01 JST
小林 (koichik) です.
> WAS6TransactionSynchronizationRegistryがUOWManagerをプロパティとして
> 持っているので、UOWManagerの下で新規トランザクション管理ができるのでは
> と考えたのですが、そうするにしてもアプリ側がUOWActionを実装しないと
> いけないし、ビジネスロジックがIBMにロックインされますもんね。。
それが Seasar2 (S2Tx) でやっていることです。
http://www.ibm.com/developerworks/jp/java/library/j_j-seasar03/index.html
その場合でも、つまり UOWManager を使っても、
suspend/resume を呼び出すことはできません。
> とはいえTransactionManagerLookupでHibernateに渡すトランザクション
> マネージャを拡張できるんでなんとでもなりますが。
UOWManager をどうラップしても suspend/resume は
できないので、なんともなりません。
JBoss Cache が suspend/resume をしない使い方に
限定するか、サポート対象外になるという前提で
WAS の TransactionManager を使うか (知らずに
GenericTransactionManagerLookup を使ってしまうと
そうなってしまいます) のどちらかでしょう。
この件は WAS 上で JBoss Cache を使う場合の問題で
Seasar は関係が無く、IBM に JBoss Cache のことを
聞いてもしょうがない気がするので、どうしても必要なら
JBoss (RedHat) のコミュニティで相談した方がいいんじゃ
ないかと思います。
On Wed, 3 Apr 2013 11:25:34 +0900 (JST), "Y.Uzawa" <uzawa @ worksap.co.jp> wrote:
> 小林さん
>
> いつもお世話様です。鵜澤です。
>
> > また、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
> >
--
{
name: "Koichi Kobayashi",
mail: "koichik @ improvement.jp",
blog: "http://d.hatena.ne.jp/koichik/",
twitter: "@koichik"
}
Seasar-user メーリングリストの案内