【WebOTX Application Server】トランザクション中のAutoCommitをfalseに設定する方法(OTX-FAQ-000637)
質問内容
OracleでSELECT FOR UPDATE の SQL 文を実行した場合に ORA-1002 が発生する問題への対応策として、Connection オブジェクトの setAutoCommit メソッドを使用してAUTOCOMMIT を OFF にする必要があります。
ejb-jar.xmlで<transaction-type>にContainerを設定している場合でも、setAutoCommitは利用できますか。
また、setAutoCommitを利用する上での注意点はありますか。
回答内容
<transaction-type>にContainerを設定している場合でも、setAutoCommit(false)は実行可能です。
ただし、コンテナでトランザクション制御が行われる場合、EJBでJDBCコネクションを取得した時のAutoCommitのデフォルト値は、falseになります。
JDBCデータソースのdefaultAutoCommitはトランザクション外でJDBCコネクションを取得した場合のAutoCommitの値です。
Webアプリケーションかアプリケーションの独自スレッド上で呼び出されたEJBでConnectionを利用するのであれば、上記のトランザクションタイプの指定は効きません。
また、トランザクションが開始された状況で、AutoCommitにfalseを設定することはできますが、trueを設定すると例外が発生しますので、ご注意ください。
【対象製品】Application Server
【確認済みのバージョン】すべて
【確認済みのエディション】すべて
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】すべて
【コンポーネント】JDBCデータソース
【カテゴリー】運用/設定
製品名カテゴリ
WebOTX
WebOTX Application Server
-
コンテンツID:
3150103500
-
公開日:
2012年07月17日
-
最終更新日:2014年11月11日
アンケート
サポート情報充実のためアンケートにご協力をお願いいたします。
コメント欄: