- - PR -
Seasarでトランザクションをロールバックできない問題について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-10 12:35
tomcat6.0
Seasar2.3.19 SqlServer2005 JDK1.6 Seasar2 はtomcatサーバーでSqlServerを接続する時、一つのServiceで2件のUpdate文を実行すると、一番目は成功するが、2番目は失敗します。 ログで、「トランザクションをロールバックしました」というメッセージを出したが、DBで一番目のUpdate文は更新した内容が依然として存在 していて、正常にロールバックしません。これは何故ですか。 ログは下記の通りです。 2008/01/10 09:26:27.812 [DEBUG] トランザクションを開始しました 2008/01/10 09:26:27.984 [DEBUG] UPDATE dbo.test SET USER_PWD = 'tcl' WHERE USER_NO = '15' 2008/01/10 09:26:28.375 [DEBUG] 物理的なコネクションを取得しました 2008/01/10 09:26:28.375 [DEBUG] 論理的なコネクションを取得しました 2008/01/10 09:26:28.531 [DEBUG] 論理的なコネクションを閉じました 2008/01/10 09:26:28.531 [DEBUG] 物理的なコネクションを閉じました 2008/01/10 09:26:28.609 [DEBUG] UPDATE dbo.test1 SET USER_PWD = 'abc' WHERE USER_NO = '16' 2008/01/10 09:26:28.625 [DEBUG] 物理的なコネクションを取得しました 2008/01/10 09:26:28.625 [DEBUG] 論理的なコネクションを取得しました 2008/01/10 09:26:28.625 [DEBUG] 論理的なコネクションを閉じました 2008/01/10 09:26:28.625 [DEBUG] 物理的なコネクションを閉じました 2008/01/10 09:26:28.625 [DEBUG] トランザクションをロールバックしました 2008/01/10 09:26:28.671 [ERROR] org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外(ErrorCode=208, SQLState=42S02)が発生しました。理由は org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[UPDATE dbo.test SET USER_PWD = ? 配置ファイル内容は下記の通りです。 j2ee.dicon <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN" "http://www.seasar.org/dtd/components.dtd"> <components namespace="j2ee"> <include path="jdbc.dicon"/> <!-- Seasar2トランザクションマネージャ --> <component name="transactionManager" class="org.seasar.extension.jta.TransactionManagerImpl"/> <!-- トランザクション属性 --> <component name="requiredTx" class="org.seasar.extension.tx.RequiredInterceptor"> <initMethod name="addRollbackRule"> <arg>@java.lang.RuntimeException@class</arg> </initMethod> </component> <component name="requiresNewTx" class="org.seasar.extension.tx.RequiresNewInterceptor"> <initMethod name="addRollbackRule"> <arg>@java.lang.RuntimeException@class</arg> </initMethod> </component> <component name="mandatoryTx" class="org.seasar.extension.tx.MandatoryInterceptor"> <initMethod name="addRollbackRule"> <arg>@java.lang.RuntimeException@class</arg> </initMethod> </component> <component name="notSupportedTx" class="org.seasar.extension.tx.NotSupportedInterceptor"> <initMethod name="addRollbackRule"> <arg>@java.lang.RuntimeException@class</arg> </initMethod> </component> <component name="basicResultSetFactory" class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/> <component name="basicStatementFactory" class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/> <!-- SQL Server 2005 --> <component name="sqlConnection" class="org.seasar.extension.dbcp.impl.XADataSourceImpl"> <property name="driverClassName">"com.microsoft.jdbc.sqlserver.SQLServerDriver"</property> <property name="URL">"jdbc:microsoft:sqlserver://192.168.1.216:1433;DatabaseName=test"</property> <property name="user">"sa"</property> <property name="password">"sa"</property> <property name="setAutoCommit">false</property> </component> <component name="sqlConnectionPool" class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl"> <property name="timeout">600</property> <property name="maxPoolSize">5</property> <property name="allowLocalTx">true</property> <property name="setAutoCommit">false</property> <property name="XADataSource">sqlConnection</property> <destroyMethod name="close"/> </component> <component name="dataSource" class="org.seasar.extension.dbcp.impl.DataSourceImpl"> <arg>sqlConnectionPool</arg> </component> </components> test.dicon <components> <!--Aspect auto regist. --> <component class="jp.co.business.service.impl.testServiceImpl"> <aspect>j2ee.requiredTx</aspect> </component> </components> testServiceImpl.java public class testServiceImpl extends PagerService implements testService { private testDao dao; public void setTestDao(testDao dao) { this.dao = dao; } public int updatePassWord(String strNo, String strPwd) { int iRtnValue = -1; iRtnValue = dao.updatePassWord("15", "tcl"); iRtnValue = dao.updatePassWord1("16", "abc"); return iRtnValue; } 大変困っています、よろしくお願いします。 [ メッセージ編集済み 編集者: beaora 編集日時 2008-01-10 12:38 ] |
1