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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 1月 5日 (水) 20:00:00 JST


小林 (koichik) です.

Date:    Wed, 5 Jan 2011 16:54:56 +0900
From:    halt <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20481] [s2jdbc]マルチスレッドによるバッチプログラム

> 1)JdbcContextなどJdbcManager以降の実装がスレッドセーフか?(複数スレッドから呼び出される)

JdbcManager はスレッドセーフです.
Web アプリでも複数のスレッドに共有された状態で
使われます.
JdbcContext はスレッド間で共有されないので
スレッドセーフではありません.

> 2)ActionがExceptionをthrowした際、全スレッドのトランザクションがきちんとrollbackされるか?

されません.
トランザクションはスレッドごとに独立して
開始・終了され,別スレッドには伝播されません.
なので,

> `HogeAction(prototype)
> JobをDIされる。Runnable実装にJobを指定してExecutorService#submit()。txAttributeCustomizer。

Action でトランザクションを開始しても,
別スレッドで実行される Job はそのトランザクションの
一部にはなりません.
Job は Job で独立したトランザクションを開始する
必要があります.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



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