2012-03-26 7 views
0

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

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 Deployment Descriptor
  2. Выберите Servlet, который инициирует транзакцию.
  3. Для сервлета, seletec Расширения Websphere> Локальная транзакция.
  4. Установите Resolver как «ContainerAtBoundary» и Unresolved Action: Rollback.
  5. Сохранить и повторно опубликовать.

Voila ... Я могу совершить сделку сейчас!

 Смежные вопросы

  • Нет связанных вопросов^_^