[Seasar-user:20482] Re: [s2jdbc] マルチスレッドによるバッチプログラム

Yasuo Higa [E-MAIL ADDRESS DELETED]
2011年 1月 5日 (水) 18:31:40 JST


ひがです。
> 
> いつもお世話になっております。大塚です。
> 
S2JDBCはスレッドセーフですが、トランザクション(JTA)は、仕様として
スレッド単位で管理することになっているので、複数スレッドなら
トランザクションはそれぞれ別になります。

> 現在、s2jdbcを用いて以下のような構成でマルチスレッドのバッチプログラム(CLI)を作成しております。
> Main getComponent(HogeAction.class)
> `HogeAction(prototype)
> JobをDIされる。Runnable実装にJobを指定してExecutorService#submit()。txAttributeCustomizer。
> `FugaJob(prototype) ビジネスロジックを実装。
> +XxxService(prototype,jdbc-gen) JdbcManagerをDIされる。
> `YyyService(prototype,jdbc-gen) JdbcManagerをDIされる。
> `MogeJob(prototype) ビジネスロジックを実装。
> +XxxService(prototype,jdbc-gen) JdbcManagerをDIされる。
> `YyyService(prototype,jdbc-gen) JdbcManagerをDIされる。
> 利用バージョン
> s2-framework-2.4.42
> s2-extension-2.4.42
> s2jdbc-gen-2.4.42
> 
> そこでいくつか懸念が生じております。
> 通常、Webアプリであれば、Action以降は同期実行されると思います。
> しかし、上記のようにActionで複数のRunnable実装を起動した場合に以下の点で懸念が生じております。
> 1)JdbcContextなどJdbcManager以降の実装がスレッドセーフか?(複数スレッドから呼び出される)
> 2)ActionがExceptionをthrowした際、全スレッドのトランザクションがきちんとrollbackされるか?
> 
> ※以下の過去レスを一読いたしましたが、s2jdbcについては言及が無いようでした。
> [Seasar-user:14973] バッチAPでマルチスレッドを使用したい
> http://ml.seasar.org/archives/seasar-user/2008-July/014977.html
> 
> 以上、お忙しいこととは存じますが、ご教示いただけると幸いです。
> 
> 
> 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> 
> 


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