- PR -

WebSphereを共用可能接続にした場合のトランザクション制御

1
投稿者投稿内容
やまろう
常連さん
会議室デビュー日: 2003/10/13
投稿数: 35
お住まい・勤務地: 埼玉・東京
投稿日時: 2005-10-08 22:20
WebSphereのデータソースを共用可能接続にした場合、複数のスレッド間で、同じ接続を共有することになるようですが、この場合にトランザクションのcommit,rollbackをJDBCのConnectionオブジェクトによって行った場合(Connection#commit(),Connection#rollbackをするという意味)、複数のスレッド間のトランザクションが混じるという問題が起きないのでしょうか?

マニュアル(http://publib.boulder.ibm.com/infocenter/wasinfo/v5r0/index.jsp?topic=/com.ibm.websphere.exp.doc/info/exp/ae/cdat_conshrnon.html)を読んでみると
「接続の共用は、トランザクション (コンテナー開始トランザクションまたはユーザー開始トランザクション) 内にいる場合に、異なるコンポーネント・インスタンス間でのみ起こります。」
とあり、
複数のスレッド間で、同じ接続を共有することになるのはJTAによるトランザクション境界をひいてる時だけなのかなぁとも思うのですが、だとしたら、JTAを使わずにConnectionオブジェクトによってcommit,rollbackしても問題は起きないとおもうのですが。

でも、そうなると共用不可能接続した時と同じになって共用可能接続のメリットがない気がします。(共用しないことになるんだから)

共用可能接続の場合は、EJB等でJTAによるトランザクション管理にすべきってことなんですかね?

Connectionオブジェクトによってトランザクション管理するなら共用可能接続でも共用不可能接続でも、いっしょってことなんでしょうか?

ご存知の方がいらっしゃったらぜひご意見を下さい。
1

スキルアップ/キャリアアップ(JOB@IT)