Исключение при выполнении фиксации транзакции: для транзакции установлен только откат - PullRequest
0 голосов
/ 26 марта 2012

Мое приложение пытается выполнить распределенную транзакцию для 2 баз данных на сервере DB2, сервер приложений - websphere 6.1 и использует Atomikos в качестве TM.

Сбой 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 () после транзакции.Почему я все еще получаю это исключение?Как я могу гарантировать, что транзакция будет совершена?

1 Ответ

0 голосов
/ 27 марта 2012

Решил проблему !!Вот что сработало для меня:

  1. Откройте дескриптор веб-развертывания
  2. Выберите сервлет, который инициирует транзакцию.
  3. Для сервлета выберите «Расширения Websphere> Локальная транзакция».
  4. Установите для резолвера значение «ContainerAtBoundary» и «Неразрешенное действие: откат».
  5. Сохранить и повторно опубликовать.

Вуаля ... Я могу совершить транзакцию сейчас !!

...