2012-03-26 11 views
0

私のアプリケーションは、DB2サーバー上の2つのデータベースで分散トランザクションを実行しようとしています。アプリケーションサーバーはwebsphere 6.1で、TMとしてAtomikosを使用しています。トランザクションコミットのスロー例外:ロールバックのみに設定されたトランザクション

UserTranaction.commit()は、以下の例外を除いて失敗している: し、javax.transaction.RollbackException:ロールバックするように設定トランザクションのみ フルスタックトレースは次のとおりです。私はトランザクションを設定していない

[3/26/12 12:08:43:880 EDT] 0000001f SystemErr  R javax.transaction.RollbackException: Transaction set to rollback only 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.jta.TransactionImp.rethrowAsJtaRollbackException(TransactionImp.java:70) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:250) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:498) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:129) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.Servlet.InitialServlet.doPost(InitialServlet.java:131) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1101) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:569) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R Caused by: com.atomikos.icatch.RollbackException: Transaction set to rollback only 
    at com.atomikos.icatch.imp.TxRollbackOnlyStateHandler.commit(TxRollbackOnlyStateHandler.java:84) 
    at com.atomikos.icatch.imp.CompositeTransactionImp.doCommit(CompositeTransactionImp.java:319) 
    at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:79) 
    at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:236) 
    at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:498) 
    at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:129) 
    at com.Servlet.InitialServlet.doPost(InitialServlet.java:131) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1101) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:569) 
    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440) 
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815) 
    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) 
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 

[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.imp.TxRollbackOnlyStateHandler.commit(TxRollbackOnlyStateHandler.java:84) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.imp.CompositeTransactionImp.doCommit(CompositeTransactionImp.java:319) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:79) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:236) 
[3/26/12 12:08:43:896 EDT] 0000001f SystemErr  R  ... 24 more 

コード内でのみロールバックします。私はデフォルトでそのセットを推測します。私はそれを変更し、それをrollbackOnlyに設定しません。また、トランザクションの後に明示的にcommit()を呼び出しています。なぜ私はまだこの例外を取得しているのですか?トランザクションが確実にコミットされるようにするにはどうすればよいですか?

答えて

0

問題を解決しました!ここで が私の仕事です:

  1. オープンのWebデプロイメント記述
  2. は、トランザクションを開始するサーブレットを選択します。
  3. サーブレットの場合、Websphere Extensions>ローカルトランザクションを選択します。
  4. Resolverを「ContainerAtBoundary」および未解決のアクション:ロールバックに設定します。
  5. 保存して再公開してください。

ボイラー...私は今取引をコミットできます!

関連する問題