Mule无法启动XA事务

时间:2016-09-22 16:18:23

标签: mule

您好我设置了三个流来接受来自http入站端点的消息,发送到VM端点并再次发送到各种其他VM端点,同时最终发送到JMS出站端点。

我需要在这些连接器之间配置事务性,并且我在配置了<jms:transaction action="ALWAYS_JOIN" />的JMS端点上使用xa-transaction操作。这似乎不起作用,当http入站端点上的消息进入并进入我得到的第一个VM端点时

消息:无法启动XA事务

代码:MULE_ERROR-95

异常堆栈是: 1.注册表中没有名为“Transaction Manager”的“javax.transaction.TransactionManager”类型的对象(java.lang.IllegalStateExcep) 荐)   org.mule.transaction.XaTransaction:56(null) 2.无法启动XA事务(org.mule.api.transaction.TransactionException)   org.mule.transaction.XaTransactionFactory:37(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transaction/TransactionException.html

Root异常堆栈跟踪: java.lang.IllegalStateException:名称为“事务管理器”的类型为“javax.transaction.TransactionManager”的对象在registr中不可用 ÿ         在org.mule.transaction.XaTransaction.doBegin(XaTransaction.java:56)         at org.mule.transaction.AbstractTransaction.begin(AbstractTransaction.java:65)         在org.mule.transaction.XaTransactionFactory.beginTransaction(XaTransactionFactory.java:32)     + 3个以上(设置调试级别日志记录或'-Dmule.verbose.exceptions = true'用于所有内容)

我的流程定义如下。

    <http:inbound-endpoint address="${test.service.proxy}"
                           transformer-refs="xmlToDom">
    </http:inbound-endpoint>
    <logger level="INFO" message="#[flow.name]: #[payload] #[message]" doc:name="Logger"/>
    <vm:outbound-endpoint path="receiveMessageStage2VM">
        <xa-transaction action="ALWAYS_BEGIN"/>
    </vm:outbound-endpoint>
</flow>

<flow name="ReceiveMessageStage2Idempotency">
    <vm:inbound-endpoint path="receiveMessageStage2VM">
        <xa-transaction action="ALWAYS_JOIN"/>
    </vm:inbound-endpoint>
    <pooled-component>
        <spring-object bean="receiveMessageIdempotentComponent"/>
        <binding interface="en.test.mf.doc.components.SyncSender">
            <vm:outbound-endpoint path="receiveMessageStage3VM">
                <xa-transaction action="ALWAYS_JOIN"/>
            </vm:outbound-endpoint>
        </binding>
    </pooled-component>
</flow>

<flow name="ReceiveMessageStage3Idempotency">

    <vm:inbound-endpoint path="receiveEVRMessageStage3VM"
                         responseTransformer-refs="jmsToString">
        <xa-transaction action="ALWAYS_JOIN"/>
    </vm:inbound-endpoint>
    <component>
        <spring-object bean="zipFileMessageHandler"/>
    </component>
    <logger level="INFO" message="#[flow.name]: #[payload] #[message]" doc:name="Logger"/>
    <outbound-endpoint ref="JMS_outbound_endpoint"
                       doc:name="JMS_outbound_endpoint"/>
</flow>

任何人都知道如何实现此功能?

1 个答案:

答案 0 :(得分:0)