1

私は websphere MQ と WAS を使用しています。

oncall メソッドでメッセージ駆動型 Bean を作成しました。データベースからデータを取得するためにビジネス レイヤーの処理を行っていますが、タイトルで述べたようにエラーが発生しています。

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: LocalTransactionWrapper@:54ae54ae  localTransaction:com.ibm.ws.rsadapter.spi.WSRdbSpiLocalTransactionImpl@54c554c5  enlisted:trueHas Tran Rolled Back = false  registeredForSynctruemcWrapper.hashcode()1415009367: Vote: none.
[10/10/12 11:39:36:780 IST] 000000ea JTAResourceBa I   WTRN0089I: com.ibm.mq.connector.xa.XARWrapper@53985398: 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)
4

1 に答える 1

3

既存の 2 フェーズ対応リソースを使用して 1 フェーズ対応リソースをコミットしようとする不正な試みが発生しました。

これはあなたが見るべきものです。

すべてのリソースが XA 対応であり、XA で動作するように構成されていることを確認してください。私の推測では、DB は XA で構成されており、MQ は構成されていません。

また、XA トランザクションで1 つの非 XA リソースを使用するオプションがあり、これは Last Participant Support と呼ばれます。

于 2012-10-10T06:55:59.140 に答える