[Seasar-user:11366] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 10月 31日 (水) 23:00:34 JST


小林 (koichik) です.

Date:    Wed, 31 Oct 2007 22:06:29 +0900
From:    鈴木 順 <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11365] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない

> jdbc.diconは以下の様になってました。
> 
> 	<component name="DataSource"
> 		class="javax.sql.DataSource">
> 		@[E-MAIL ADDRESS DELETED]("java:comp/env/jdbc/cim")
> 	</component>

JTA 実装を含んだ AP サーバを利用する場合は上記の
ような設定になります.
# jta.dicon の変更も必要になりますが.
その場合,ルックアップした DataSource の水面下では
XADataSource が使われ,AP サーバの持つ JTA 実装と
連携します.

Tomcat は (標準では) JTA 実装を持たないし,普通に
commons DBCP を使った場合は水面下に XADataSource が
いるわけでもありません.
そのため,JTA とは連携しません.

> XADataSourceに変えてみます。

[Seasar-user:11364] の 3 では ConnectionPool や

<component name="DataSource"
  class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>

の設定も必要なのでお忘れなく.
# S2DBCP を普通に使う場合とほとんど同じ設定で,
# XADataSourceImpl が DataSourceXADataSource に,
# ConnectionPoolImpl の maxPoolSize が 0 に
# 変わるだけです.

> org.seasar.hibernate3.S2SessionFactoryで
> XA対応されているものってないのでしょうか?

S2Hibernate では Hibernate 側に XA を
意識させないようになっています.

今回の問題は Hibernate は一切関係なく,
JDBC を直接使った場合でも同じように
S2Tx によるトランザクション制御が機能しない
状態になります.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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