Mule XA Transaction不与VM和JMS一起使用

时间:2014-10-14 06:07:25

标签: transactions jms mule xa

我有一个VM入站端点和JMS出站端点的流程。当我使用VM和JMS启动XA事务时,它会在无限循环中抛出异常。我试过不同的事务类型,但它抛出相同的异常。任何指针??

我还有一个流程可以在VM:// abc123中删除按摩。现在我从VM中提取这些消息并放入JMS队列。

<flow name="transactionMainFlow_202_EQueue_JMS" doc:name="transactionMainFlow_202_EQueue_JMS">
    <vm:inbound-endpoint exchange-pattern="one-way"  doc:name="VM" path="abc123">
        <xa-transaction action="ALWAYS_BEGIN"/>
    </vm:inbound-endpoint>
    <timer-interceptor />
     <jms:outbound-endpoint queue="${om_request_queue}"
            connector-ref="Offering_Messaging_Connector" doc:name="OM_JMS_Request_Queue">
        <xa-transaction action="BEGIN_OR_JOIN"/>
      </jms:outbound-endpoint>
        <catch-exception-strategy doc:name="Catch Exception Strategy">
            <logger message="#[exception]" level="ERROR" category="Exception"
                doc:name="Logger" />
        </catch-exception-strategy>
</flow>

例外:

ERROR 2014-10-13 22:55:32,596 [[transaction-orch].VM_Connector.receiver.04] org.mule.exception.DefaultSystemExceptionStrategy: 
********************************************************************************
Message               : Can not start XA transaction
Code                  : MULE_ERROR-95
--------------------------------------------------------------------------------
Exception stack is:
1. Object of type "javax.transaction.TransactionManager" with name "Transaction Manager" is not available in the registry (java.lang.IllegalStateException)
  org.mule.transaction.XaTransaction:53 (null)
2. Can not start XA transaction (org.mule.api.transaction.TransactionException)
  org.mule.transaction.XaTransactionFactory:33 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transaction/TransactionException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.IllegalStateException: Object of type "javax.transaction.TransactionManager" with name "Transaction Manager" is not available in the registry
    at org.mule.transaction.XaTransaction.doBegin(XaTransaction.java:53)
    at org.mule.transaction.AbstractTransaction.begin(AbstractTransaction.java:62)
    at org.mule.transaction.XaTransactionFactory.beginTransaction(XaTransactionFactory.java:28)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果启用了XA事务,则需要配置事务管理器参考

如果您选择JBoss Transaction Manager Reference 添加全局属性

<jbossts:transaction-manager > <property key="com.arjuna.ats.arjuna.coordinator.defaultTimeout" value="47" /><!-- this is in seconds --> <property key="com.arjuna.ats.arjuna.coordinator.txReaperTimeout" value="108000"/><!-- this is in milliseconds --> </jbossts:transaction-manager>