2012-10-10 79 views
1

我正在使用websphere MQ和WAS。上次嘗試傳遞失敗,並顯示以下錯誤:javax.jms.TransactionRolledBackException:

我創建的消息驅動bean,在OnCall中的方法我在做業務層充塞從數據庫中獲取數據,但正如我在標題 提到我用鱈魚喜歡這裏

JAXBContext context = JAXBContext.newInstance("com.schema.ticketservices_v1"); 
      Unmarshaller unmarshaller = context.createUnmarshaller(); 

      RetrieveTicketRequest retrieveTicketRequest = (RetrieveTicketRequest) unmarshaller.unmarshal(new FileInputStream("D://request4.xml")); 
      System.out.println(retrieveTicketRequest.getCorrelationID()); 
      TicketRemarksBindingImpl bindingImpl = new TicketBindingImpl(); 
      RetrieveTicketResponse retrieveTicketResponse = bindingImpl.retrieve(retrieveTicketRequest); 

我是我得到的錯誤能夠從數據庫中檢索,但得到預期的數據下面的異常

[10/10/12 11:39:36:778 IST] 000000ea RegisteredRes E WTRN0063E: An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurred. 
[10/10/12 11:39:36:779 IST] 000000ea RegisteredRes E WTRN0086I: XAException encountered during prepare phase for transaction 0000013A494AE71F000000020000000AA2E8C1F524D2F1D345141C905AF81B4416CCDB030000013A494AE71F000000020000000AA2E8C1F524D2F1D345141C905AF81B4416CCDB0300000001. Local resources follow. 
[10/10/12 11:39:36:779 IST] 000000ea JTAResourceBa I WTRN0089I: [email protected]:54ae54ae localTransaction:[email protected] enlisted:trueHas Tran Rolled Back = false registeredForSynctruemcWrapper.hashcode()1415009367: Vote: none. 
[10/10/12 11:39:36:780 IST] 000000ea JTAResourceBa I WTRN0089I: [email protected]: Vote: commit. 
[10/10/12 11:39:36:814 IST] 00000024 ActivationSpe I J2CA0524I: The Message Endpoint for ActivationSpec jms/testMDBspec (com.ibm.mq.connector.inbound.ActivationSpecImpl) and MDB Application TicketRemarkServiceEJBProjectEAR#TicketRemarkServiceEJBProject.jar#TicketMDB is deactivated. 
[10/10/12 11:39:36:815 IST] 00000024 SibMessage W [:] CWWMQ0007W: The message endpoint TicketRemarkServiceEJBProjectEAR#TicketRemarkServiceEJBProject.jar#TicketMDB has been paused by the system. Message delivery failed to the endpoint more than 0 times. The last attempted delivery failed with the following error: javax.jms.TransactionRolledBackException: 
    at com.ibm.mq.connector.inbound.WorkImpl.callDeliveryFailed(WorkImpl.java:464) 
    at com.ibm.mq.connector.inbound.WorkImpl.xaStateChanged(WorkImpl.java:421) 
    at com.ibm.mq.connector.xa.XAObservable.update(XAObservable.java:120) 
    at com.ibm.mq.connector.xa.XARWrapper.rollback(XARWrapper.java:444) 
    at com.ibm.tx.jta.JTAXAResourceImpl.rollback(JTAXAResourceImpl.java:363) 
    at com.ibm.tx.jta.RegisteredResources.deliverOutcome(RegisteredResources.java:1589) 
    at com.ibm.tx.jta.RegisteredResources.distributeOutcome(RegisteredResources.java:1926) 
    at com.ibm.tx.jta.RegisteredResources.distributeRollback(RegisteredResources.java:2579) 
    at com.ibm.tx.jta.TransactionImpl.internalRollback(TransactionImpl.java:1951) 
    at com.ibm.tx.jta.TransactionImpl.internalRollback(TransactionImpl.java:1914) 
    at com.ibm.tx.jta.TransactionImpl.coreStage2CommitProcessing(TransactionImpl.java:1101) 
    at com.ibm.tx.jta.TransactionImpl.stage2CommitProcessing(TransactionImpl.java:1128) 
    at com.ibm.tx.jta.TransactionImpl.processCommit(TransactionImpl.java:989) 
    at com.ibm.tx.jta.TransactionImpl.commit(TransactionImpl.java:919) 
    at com.ibm.ws.tx.jta.TranManagerImpl.commit(TranManagerImpl.java:436) 
    at com.ibm.tx.jta.TranManagerSet.commit(TranManagerSet.java:161) 
    at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:927) 
    at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:230) 
    at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:570) 
    at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4558) 
    at com.ibm.ejs.container.MessageEndpointHandler.afterDelivery(MessageEndpointHandler.java:1449) 
    at com.ibm.ejs.container.MessageEndpointHandler.invokeMessageEndpointMethod(MessageEndpointHandler.java:806) 
    at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:767) 
    at $Proxy118.afterDelivery(Unknown Source) 
    at com.ibm.mq.connector.inbound.WorkImpl.run(WorkImpl.java:333) 
    at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:399) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604) 

回答

3

An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurred.

這就是你應該看。

確保所有資源都具有XA能力,並且配置爲與XA一起使用,我猜測數據庫是使用XA配置的,而MQ不是。

此外,還有一個選項可用於在XA交易中使用一個非XA資源,它被稱爲最後參與者支持。

+0

感謝您的回覆...然後如何使這個XA能夠..for DB以及MQ ..? – saagaravk

+0

對於數據庫,它取決於您爲JDBC提供程序選擇的驅動程序。對於MQ我不知道,但是搜索websphere MQ XA會給出很多結果。 –

相關問題