[Seasar-user:10444] Re: [S2Dao]サーバ再起動時の動作に関して
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 9月 10日 (月) 19:30:22 JST
小林 (koichik) です.
Date: Mon, 10 Sep 2007 16:00:16 +0900
From: 林 祐一郎 <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:10441] [S2Dao]サーバ再起動時の動作に関して
> 現在、私が携わっているプロジェクトで、
> 『サーブレットコンテナの再起動時と、DBへの登録処理とが重なった場合、
> データの登録(コミット)が中途半端な状態で行われる』
> という現象が発生いたしました。
Oracle の JDBC ドライバは,コネクションをクローズ
する際に,
・自動コミットモードがオフ
・未コミットのトランザクションがある
場合はトランザクションをコミットしてしまうようです.
以下のドキュメントの「注意」.
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/basic.htm#sthref117
しかし,Seasar2 のコネクションプールは
終了時にコネクションを単にクローズしていました.
そのため,Seasar2 が管理しているトランザクションが
開始されている (自動コミットモードがオフ) 状態で
Web コンテナが終了されると,コネクションプール及び
コネクションがクローズされ,未コミットの
トランザクションがコミットされてしまうことになります.
これはまずいので,コネクションをクローズする際に
自動コミットモードがオフであればトランザクションを
ロールバックするように修正しました.
以下に SNAPSHOT を起きましたが,これらを使って頂くには
S2Dao のバージョンアップも必要になってしまいます.
その場合,dao.dicon 等の修正も必要になるらしいのですが,
そのドキュメントはまだ揃っていないとのことです.
もしバージョンアップが困難であれば,添付のソースを
アプリケーションのソースフォルダに加えてください.
Seasar2 の Jar ファイルよりも WEB-INF/classes に
あるクラスが優先的に使用されます.
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.3.23-SNAPSHOT/s2-framework-2.3.23-20070910.095704-3.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.3.23-SNAPSHOT/s2-extension-2.3.23-20070910.095704-3.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/dao/s2-dao/1.0.47-SNAPSHOT/s2-dao-1.0.47-20070910.101146-4.jar
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: ConnectionWrapperImpl.java
型: application/octet-stream
サイズ: 15923 バイト
説明: 無し
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070910/1e78cb64/attachment.obj
Seasar-user メーリングリストの案内