So, when using Geronimo, why do you set transacted=false on your JMS component, but yet give it a TransactionManager reference?
On Thu, Sep 13, 2012 at 6:11 PM, Christian Müller <christian.muel...@gmail.com> wrote: > May be these examples are useful for you: > https://github.com/muellerc/camel-in-transaction > > Best, > Christian > > On Thu, Sep 13, 2012 at 4:33 PM, James Carman > <ja...@carmanconsulting.com>wrote: > >> Claus, >> >> Is there any guidance on how to set up XA correctly? We're having a >> really rough time getting Websphere MQ and SQL Server connections to >> work together in an XA fashion. >> >> Thanks, >> >> james >> >> On Thu, Sep 13, 2012 at 10:17 AM, Claus Ibsen <claus.ib...@gmail.com> >> wrote: >> > For that you would need XA when you have 2+ resources participating in >> > the same transaction. >> > It can be tricky to setup. You would need to use the JTA transaction >> > manager from WebSphere etc which supports XA. >> > >> > Make sure the MQ connection factory you refer to is the XA one. >> > >> > On Thu, Sep 13, 2012 at 2:59 PM, Caa_man <c...@acs-it.ru> wrote: >> >> Hello! >> >> >> >> I`d like to built a camel route with this logic: >> >> >> >> - receive message with XML from WebSphere queue (camel "from") >> >> - begin transaction (distributed transaction via "transacted") >> >> - parse xml (camel "process") >> >> - save income message to Oracle DB (camel "process") >> >> - create reply message (camel "process") >> >> - send reply message to WebSphere queue (camel "to" with >> >> uri="bean:mqRemoteSender?method=remoteRoute", where I manually send >> >> camel-message body to MQQueue object) >> >> >> >> i.e. I`d like to do "INSERT" request to DB and send message in single >> >> transaction. >> >> >> >> I use: >> >> >> >> 1) JmsComponent: >> >> <bean id="wmq" class="org.apache.camel.component.jms.JmsComponent"> >> >> <property name="connectionFactory" ref="wmqConnectionFactory"/> >> >> <property name="concurrentConsumers" value="5"/> >> >> <property name="maxConcurrentConsumers" value="5"/> >> >> <property name="transactionManager" ref="transactionManager"/> >> >> <property name="transacted" value="true"/> >> >> </bean> >> >> <bean id="wmqConnectionFactory" >> >> class="com.ibm.mq.jms.MQConnectionFactory"> >> >> <property name="transportType" value="1"/> >> >> <property name="hostName" value="${HostName}"/> >> >> <property name="port"> >> >> <bean id="portValue" class="java.lang.Integer"> >> >> <constructor-arg value="${PortValue}"/> >> >> </bean> >> >> </property> >> >> <property name="queueManager" value="${ManagerName}"/> >> >> <property name="channel" value="${ConnectionChannel}"/> >> >> </bean> >> >> 2) Transaction policy: >> >> <bean id="required" >> >> class="org.apache.camel.spring.spi.SpringTransactionPolicy"> >> >> <property name="transactionManager" ref="transactionManager"/> >> >> <property name="propagationBehaviorName" >> >> value="PROPAGATION_REQUIRED"/> >> >> </bean> >> >> 3) Transaction manager: >> >> <bean id="transactionManager" >> >> class="org.springframework.transaction.jta.JtaTransactionManager"/> >> >> 4) Annotation driver: >> >> <tx:annotation-driven transaction-manager="transactionManager" /> >> >> 5) Process with DB save requests: >> >> >> >> private org.springframework.orm.jpa.JpaTemplate jtaTemplate; >> >> >> >> @Transactional(propagation = Propagation.REQUIRED) >> >> @Override >> >> public void process(Exchange exchange) throws Exception { >> >> SomeEntityClass entityObject = new SomeEntityClass(); >> >> ... >> >> jtaTemplate.persist(entityObject); >> >> jtaTemplate.flush(); >> >> } >> >> 6) persistence-unit: >> >> <persistence-unit name="jpaName" transaction-type="JTA"> >> >> >> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> >> >> <jta-data-source>jdbc/applicationConnection</jta-data-source> >> >> <mapping-file>META-INF/orm.xml</mapping-file> >> >> <class>SomeEntityClass</class> >> >> <properties> >> >> <property name="eclipselink.target-server" >> value="OC4J" /> >> >> <property name="eclipselink.target-database" >> value="Oracle" /> >> >> <property name="eclipselink.weaving" >> value="false" /> >> >> <property name="eclipselink.logging.level" >> value="FINE" /> >> >> <property >> name="eclipselink.cache.shared.default" value="false"/> >> >> <property name="eclipselink.jdbc.batch-writing" >> >> value="Oracle-JDBC" /> >> >> <property name="eclipselink.jdbc.fetch-size" value="1000" /> >> >> </properties> >> >> </persistence-unit> >> >> >> >> But there is no distributed transaction. >> >> Oracle-db-transaction and wmq-send-transaction are independent from >> >> jms-receive-transaction. >> >> Whats wrong? >> >> >> >> >> >> >> >> -- >> >> View this message in context: >> http://camel.465427.n5.nabble.com/Distributed-transaction-in-camel-route-tp5719279.html >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> > >> > >> > >> > -- >> > Claus Ibsen >> > ----------------- >> > FuseSource >> > Email: cib...@fusesource.com >> > Web: http://fusesource.com >> > Twitter: davsclaus, fusenews >> > Blog: http://davsclaus.com >> > Author of Camel in Action: http://www.manning.com/ibsen >> > > > > --