Mule Can not start XA transaction -
hi have 3 flows set accept message http inbound endpoint, send vm endpoint , again various other vm endpoints while being sent jms outbound endpoint.
i need configure transactionality between these connectors , using xa-transaction actions jms endpoint having <jms:transaction action="always_join" />
configured. doesn't seem working when message comes in on http inbound endpoint , goes first vm endpoint get
message : can not start xa transaction
code : mule_error-95
exception stack is: 1. object of type "javax.transaction.transactionmanager" name "transaction manager" not available in registry (java.lang.illegalstateexcep tion) org.mule.transaction.xatransaction:56 (null) 2. can not start xa transaction (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 exception stack trace: java.lang.illegalstateexception: object of type "javax.transaction.transactionmanager" name "transaction manager" not available in registr y @ org.mule.transaction.xatransaction.dobegin(xatransaction.java:56) @ org.mule.transaction.abstracttransaction.begin(abstracttransaction.java:65) @ org.mule.transaction.xatransactionfactory.begintransaction(xatransactionfactory.java:32) + 3 more (set debug level logging or '-dmule.verbose.exceptions=true' everything)
my flow defined below.
<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>
anyone know how can achieve functionality?
you need add transaction manager bitronix - https://docs.mulesoft.com/mule-user-guide/v/3.7/using-bitronix-to-manage-transactions
Comments
Post a Comment