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
>>
>
>
>
> --

Reply via email to