[Seasar-user:11364] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 10月 31日 (水) 21:30:26 JST
小林 (koichik) です.
Date: Wed, 31 Oct 2007 20:31:02 +0900
From: 鈴木 順 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11363] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない
> 環境はTOMCATでDataSourceはweb.xmlに定義してあります。
これが原因でしょう.
トランザクションマネージャと連携するには,
単なる DataSource ではなく XADataSource が
必要です.
対応としては,
1.Tomcat 側で XADataSource を設定する.
2.S2DBCP を使用する.
3.S2DBCP で Tomcat の DataSource を使用する.
などの方法が考えられます.
1.の場合は XADataSource に加えて JTA 実装も
Tomcat 側に定義することになります.
JOTM を使うことが多いようですが,自分は詳しく
ありません.
2.は Seasar2 の一般的な利用方法です.
3.は jdbc.dicon に Tomcat 側の DataSource を
利用する DataSourceXADataSource を定義します.
# XADataSourceImpl は不要になります.
ConnectionPoolImpl の maxPoolSize を 0 にすることで,
S2DBCP としてはコネクションプールを行わなくなります
(トランザクションマネージャとの連携のために使用する).
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.DataSourceXADataSource">
<property name="dataSourceName">"java:comp/env/jdbc/DataSource"</property>
</component>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="maxPoolSize">0</property>
...
</component>
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内