If I use as TransactionManager

org.springframework.orm.hibernate3.HibernateTransactionManager

in DAO layer
in Spring layer
in Camel route

instead of

org.springframework.transaction.PlatformTransactionManager

It works. The transaction is well rollbacked !!!!! yes yes yes yes

If you find a solution to use the JTATransactionManager Guillaume, you are
welcome ;-)

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Fri, Jul 3, 2009 at 4:14 PM, Charles Moulliard <cmoulli...@gmail.com>wrote:

> OK. I will change my config to use a separate TransactionManager for DB
> stuffs.
>
> My idea was to use the same transaction manager (JTA) in the application
> for JMS, DB, ... transactions but If this is not possible ...
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
>
>
> On Fri, Jul 3, 2009 at 4:08 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>
>> On Fri, Jul 3, 2009 at 4:04 PM, Charles Moulliard<cmoulli...@gmail.com>
>> wrote:
>> > No. In the route presented here I don't make 2 independant DB calls.
>> Only
>> > one. The second bean called (generateError) only do a throw (without any
>> > Hibernate/DB call)
>> >
>> > By the way, in the example
>> >
>> apache-camel-source\components\camel-spring\src\test\java\org\apache\camel\spring\interceptor\TransactionalClientDataSourceTest.java,
>> > two DB calls are made by two different beans and rollback is done !!
>> Yes and it is because it uses a DB TX manager
>>
>>    <!-- spring transaction manager -->
>>    <bean id="txManager"
>> class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
>>        <property name="dataSource" ref="dataSource"/>
>>    </bean>
>>
>> This TX manager knows about DB stuff.
>>
>>
>>
>>
>> >
>> > Regards,
>> >
>> > Charles Moulliard
>> > Senior Enterprise Architect
>> > Apache Camel Committer
>> >
>> > *****************************
>> > blog : http://cmoulliard.blogspot.com
>> >
>> >
>> > On Fri, Jul 3, 2009 at 3:56 PM, Claus Ibsen <claus.ib...@gmail.com>
>> wrote:
>> >
>> >> On Fri, Jul 3, 2009 at 3:52 PM, Guillaume Nodet<gno...@gmail.com>
>> wrote:
>> >> > If the message is redelivered, this means there is a rollback.
>> >> > I guess the problem is that your DB is not enlisted in the
>> transaction.
>> >> > However, if you don't want to use XA and two phase commit, you should
>> >> > try to perform the database step as late as possible so that there is
>> >> very few
>> >> > chances that anything wrong happen after the data has been written to
>> the
>> >> DB.
>> >> > Btw, in your route, I don't see at which step the message is written
>> >> > to the DB ... ?
>> >>
>> >> He uses 2 independent DB calls and uses a JMS TX manager. Then its
>> >> bound not to be enlisted in the same TX manager.
>> >> So as G. Nodet said try to combine your DB calls into a single
>> >> invocation, eg you might need to start / stop a local DB transaction
>> >> yourself using Hibernate and/or JPA.
>> >>
>> >>
>> >>
>> >> >
>> >> > On Fri, Jul 3, 2009 at 15:26, Charles Moulliard<cmoulli...@gmail.com
>> >
>> >> wrote:
>> >> >> I have created a small route without JMS stuff.
>> >> >>
>> >> >> Here is the route :
>> >> >>
>> >> >>        <camel:route>
>> >> >>            <camel:from ref="fileClientEndpoint" />
>> >> >>
>> >> >>            <camel:setHeader headerName="origin">
>> >> >>                <camel:constant>file</camel:constant>
>> >> >>            </camel:setHeader>
>> >> >>            <camel:setHeader headerName="messageType">
>> >> >>                <camel:constant>OINP</camel:constant>
>> >> >>            </camel:setHeader>
>> >> >>            <camel:convertBodyTo type="java.lang.String"/>
>> >> >>            <camel:to ref="directRequestEndpoint" />
>> >> >>        </camel:route>
>> >> >>
>> >> >>        <camel:route>
>> >> >>            <camel:from ref="directRequestEndpoint" />
>> >> >>            <camel:transacted ref="PROPAGATION_REQUIRED"/>
>> >> >>            <!-- Call the requestService to save the request -->
>> >> >>            <camel:bean ref="serviceHelper" method="createRequest"/>
>> >> >>            <camel:bean ref="serviceHelper" method="generateError" />
>> >> >>            <camel:to uri="direct:testTx"/>
>> >> >>        </camel:route>
>> >> >>
>> >> >> Unfortunately when a throw error is generated in bean called
>> >> "generateError"
>> >> >>
>> >> >>    public void generateError() {
>> >> >>            throw new IllegalArgumentException("Generate error to
>> test
>> >> >> rollback");
>> >> >>    }
>> >> >>
>> >> >> records are committed in the DB and not rollbacked
>> >> >>
>> >> >>
>> >> >> I see that when the error is throw the message is redelivered a
>> second
>> >> time
>> >> >> as this parameter has been defined in the ActiveMq
>> >> >>
>> >> >>    <bean id="x3sPolicy"
>> class="org.apache.activemq.RedeliveryPolicy">
>> >> >> *        <property name="maximumRedeliveries" value="1"/>*
>> >> >>    </bean>
>> >> >>
>> >> >>    <bean id="activemqConnectionFactory"
>> >> >> class="org.apache.activemq.ActiveMQConnectionFactory">
>> >> >>        <property name="brokerURL" value="tcp://localhost:61616" />
>> >> >>        <property name="redeliveryPolicy" ref="x3sPolicy"/>
>> >> >>    </bean>
>> >> >>
>> >> >> Question :  Why policy defined in the ActiveMq is taken into account
>> >> here ?
>> >> >> Why the rollback does not occur ?
>> >> >>
>> >> >> Charles Moulliard
>> >> >> Senior Enterprise Architect
>> >> >> Apache Camel Committer
>> >> >>
>> >> >> *****************************
>> >> >> blog : http://cmoulliard.blogspot.com
>> >> >>
>> >> >>
>> >> >> On Fri, Jul 3, 2009 at 12:28 PM, Claus Ibsen <claus.ib...@gmail.com
>> >
>> >> wrote:
>> >> >>
>> >> >>> On Fri, Jul 3, 2009 at 12:16 PM, Guillaume Nodet<gno...@gmail.com>
>> >> wrote:
>> >> >>> > In this case, you should not use transactions for the DB at all,
>> but
>> >> >>> > if any error occurs while saving the data, an exception should be
>> >> >>> > thrown and should rollback the transaction for the JMS layer.
>> >> >>> Yeah that would be perfect unless he does some work afterwards the
>> DB
>> >> >>> and that throws an Exception.
>> >> >>> Then the DB layer have already committed.
>> >> >>>
>> >> >>> So trying to avoid doing work after the DB layer would help.
>> >> >>>
>> >> >>>
>> >> >>> Is this not possible?
>> >> >>> But he is doing JPA/Hibernte stuff so he could grab the "session"
>> and
>> >> >>> invoke a rollback manually in case errors happen afterwards.
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> >
>> >> >>> > On Fri, Jul 3, 2009 at 10:48, Charles Moulliard<
>> cmoulli...@gmail.com
>> >> >
>> >> >>> wrote:
>> >> >>> >> Claus,
>> >> >>> >>
>> >> >>> >> I don't want at all to use XA transaction. Correct me if I'm
>> wrong
>> >> but
>> >> >>> the
>> >> >>> >> example of the documentation (Camel 2.0 - JMS Sample - part
>> Spring
>> >> XML)
>> >> >>> does
>> >> >>> >> not use at all a XA driver and the message will not be removed
>> from
>> >> the
>> >> >>> >> queue if a rollback occurs in the bean MyProcessor ?
>> >> >>> >>
>> >> >>> >> My concern is to avoid to lost messages from a file, queues if
>> >> something
>> >> >>> >> happen in one of the services called where by example we have to
>> >> save
>> >> >>> data
>> >> >>> >> in a DB or generate a report for a client. If such errors occur,
>> >> then we
>> >> >>> >> have to investigate why can't save data in DB (maybe related to
>> a
>> >> >>> connection
>> >> >>> >> issue, DB shutdown, ...) or generates files (maybe due to disk
>> full,
>> >> >>> access
>> >> >>> >> right, ....). Sometimes, this is related to conditions out of
>> the
>> >> >>> control of
>> >> >>> >> our application but sometimes no, then we have to correct the
>> error
>> >> and
>> >> >>> >> install a new version of the code. After the restart of the
>> >> application
>> >> >>> and
>> >> >>> >> recovery of messages (persisted in the case of activemq),
>> messages
>> >> will
>> >> >>> be
>> >> >>> >> reprocessed.
>> >> >>> >>
>> >> >>> >> Regards,
>> >> >>> >>
>> >> >>> >> Charles Moulliard
>> >> >>> >> Senior Enterprise Architect
>> >> >>> >> Apache Camel Committer
>> >> >>> >>
>> >> >>> >> *****************************
>> >> >>> >> blog : http://cmoulliard.blogspot.com
>> >> >>> >>
>> >> >>> >>
>> >> >>> >> On Fri, Jul 3, 2009 at 10:26 AM, Claus Ibsen <
>> claus.ib...@gmail.com
>> >> >
>> >> >>> wrote:
>> >> >>> >>
>> >> >>> >>> And reconsider if you need XA at all. Its slow and hard to get
>> >> setup.
>> >> >>> >>>
>> >> >>> >>> Try to let the DB be the last stuff you do and afterwards send
>> the
>> >> >>> >>> message to another queue for further processing in a 2nd route.
>> >> >>> >>> If that is possible in your use-case.
>> >> >>> >>>
>> >> >>> >>>
>> >> >>> >>> On Fri, Jul 3, 2009 at 10:25 AM, Claus Ibsen<
>> claus.ib...@gmail.com
>> >> >
>> >> >>> wrote:
>> >> >>> >>> > Hi
>> >> >>> >>> >
>> >> >>> >>> > Get it working outside OSGi, eg in a small unit test thats
>> easy
>> >> to
>> >> >>> run
>> >> >>> >>> > and test from within your IDE.
>> >> >>> >>> > Google for JMS + hibernate + TX + XA to find some samples
>> that
>> >> work.
>> >> >>> >>> >
>> >> >>> >>> > And since you use JMS + DB in the same TX you need to use XA
>> db
>> >> >>> driver.
>> >> >>> >>> >
>> >> >>> >>> > It can be a painful to get setup
>> >> >>> >>> >
>> >> >>> >>>
>> >> >>>
>> >>
>> http://coffeedrivenjava.blogspot.com/2006/08/distributed-xa-transactions-w-hibernate.html
>> >> >>> >>> >
>> >> >>> >>> > And you need an XA TX manager such as JOTM
>> >> >>> >>> > http://jotm.ow2.org/xwiki/bin/view/Main/WebHome
>> >> >>> >>> >
>> >> >>> >>> > In j2ee land there was a JTA with the container that could do
>> it.
>> >> But
>> >> >>> >>> > in your OSGi container I do not know if it provides one out
>> of
>> >> the
>> >> >>> >>> > box.
>> >> >>> >>> >
>> >> >>> >>> >
>> >> >>> >>> > On Fri, Jul 3, 2009 at 10:09 AM, Charles Moulliard<
>> >> >>> cmoulli...@gmail.com>
>> >> >>> >>> wrote:
>> >> >>> >>> >> I'm still fighting against Spring config or Camel because
>> >> Rollback
>> >> >>> does
>> >> >>> >>> not
>> >> >>> >>> >> occur. I have been able to configure Hibernate to use the
>> same
>> >> >>> >>> >> TransactionManager as the one used by JMS
>> >> >>> >>> >>
>> >> >>> >>> >> Here is the different part of the config. I don't know where
>> the
>> >> >>> issue
>> >> >>> >>> could
>> >> >>> >>> >> be !
>> >> >>> >>> >>
>> >> >>> >>> >> 1) ActiveMQ
>> >> >>> >>> >>
>> >> >>> >>> >> ...
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="activemqConnectionFactory"
>> >> >>> >>> >> class="org.apache.activemq.ActiveMQConnectionFactory">
>> >> >>> >>> >>        <property name="brokerURL"
>> value="tcp://localhost:61616"
>> >> />
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="pooledConnectionFactory"
>> >> >>> >>> >>
>> class="org.apache.activemq.pool.PooledConnectionFactoryBean">
>> >> >>> >>> >>        <property name="maxConnections" value="8" />
>> >> >>> >>> >>        <property name="maximumActive" value="500" />
>> >> >>> >>> >>        <property name="transactionManager"
>> >> ref="transactionManager"
>> >> >>> />
>> >> >>> >>> >>        <property name="connectionFactory"
>> >> >>> >>> ref="activemqConnectionFactory"
>> >> >>> >>> >> />
>> >> >>> >>> >>        <property name="resourceName"
>> value="activemq.default" />
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="resourceManager"
>> >> >>> >>> >> class="org.apache.activemq.pool.ActiveMQResourceManager"
>> >> >>> >>> >> init-method="recoverResource">
>> >> >>> >>> >>          <property name="transactionManager"
>> >> >>> ref="transactionManager" />
>> >> >>> >>> >>          <property name="connectionFactory"
>> >> >>> >>> ref="activemqConnectionFactory"
>> >> >>> >>> >> />
>> >> >>> >>> >>          <property name="resourceName"
>> value="activemq.default"
>> >> />
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>    <osgi:reference id="transactionManager"
>> >> >>> >>> >> interface="javax.transaction.TransactionManager" /> // This
>> OSGI
>> >> >>> service
>> >> >>> >>> is
>> >> >>> >>> >> published by Geronimo Transaction bundle
>> >> >>> >>> >>
>> >> >>> >>> >>    <osgi:service ref="pooledConnectionFactory">
>> >> >>> >>> >>        <osgi:interfaces>
>> >> >>> >>> >>            <value>javax.jms.ConnectionFactory</value>
>> >> >>> >>> >>        </osgi:interfaces>
>> >> >>> >>> >>        <osgi:service-properties>
>> >> >>> >>> >>            <entry key="name" value="default"/>
>> >> >>> >>> >>        </osgi:service-properties>
>> >> >>> >>> >>    </osgi:service>
>> >> >>> >>> >>
>> >> >>> >>> >> 2) Camel ActiveMQComponent
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="active-mq"
>> >> >>> >>> >>
>> class="org.apache.activemq.camel.component.ActiveMQComponent">
>> >> >>> >>> >>        <property name="transacted" value="true"/>
>> >> >>> >>> >>        <property name="connectionFactory">
>> >> >>> >>> >>            <osgi:reference
>> >> interface="javax.jms.ConnectionFactory"/>
>> >> >>> //
>> >> >>> >>> >> OSGI service is published by ActiveMQ service
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>        <property name="transactionManager">
>> >> >>> >>> >>            <osgi:reference
>> >> >>> >>> >>
>> >> >>>
>> >>
>> interface="org.springframework.transaction.PlatformTransactionManager"/>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >> 2) Hibernate - DAO
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="sessionFactory"
>> >> >>> >>> >>
>> >> class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
>> >> >>> >>> >>
>> >> >>> >>> >>        <property name="mappingLocations">
>> >> >>> >>> >>            <list>
>> >> >>> >>> >>
>> >> >>> >>> >>
>> >> >>> >>>
>> >> >>>
>> >>
>> <value>classpath*:META-INF/com/xpectis/x3s/platform/model/*.hbm.xml</value>
>> >> >>> >>> >>            </list>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>
>> >> >>> >>> >>        <property name="hibernateProperties">
>> >> >>> >>> >>            <props>
>> >> >>> >>> >>                <prop
>> >> >>> >>> >>
>> >> key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
>> >> >>> >>> >>                <prop key="hibernate.show_sql">true</prop>
>> >> >>> >>> >>                <prop key="hibernate.format_sql">true</prop>
>> >> >>> >>> >>                <prop
>> >> >>> >>> >> key="hibernate.cglib.use_reflection_optimizer">true</prop>
>> >> >>> >>> >>                <prop
>> key="hibernate.jdbc.batch_size">10</prop>
>> >> >>> >>> >>                <prop
>> >> >>> >>> >>
>> >> >>> >>>
>> >> >>>
>> >>
>> key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
>> >> >>> >>> >>                <prop
>> >> >>> >>> >>
>> >> >>> >>>
>> >> >>>
>> >>
>> key="hibernate.transaction.factory_class">org.springframework.orm.hibernate3.SpringTransactionFactory</prop>
>> >> >>> >>> >>            </props>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>        <property name="dataSource">
>> >> >>> >>> >>            <ref bean="dataSource" />
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>
>> >> >>> >>> >> Remark : To avoid the JNDI lookup issue, we use
>> >> >>> springTransactionFactory
>> >> >>> >>> as
>> >> >>> >>> >> the TransactionFactory for Hibernate (
>> >> >>> >>> >> http://forum.springsource.org/showthread.php?p=215720)
>> >> >>> >>> >>
>> >> >>> >>> >> 3) Service layer
>> >> >>> >>> >>
>> >> >>> >>> >> Here is the definition of the service used from Camel route
>> :
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="notificationServiceTarget"
>> >> >>> >>> >>
>> >> >>>
>> class="com.xpectis.x3s.platform.service.impl.NotificationServiceImpl">
>> >> >>> >>> >>            <property name="notificationDAO">
>> >> >>> >>> >>            <osgi:reference
>> >> >>> >>> >> interface="com.xpectis.x3s.platform.dao.NotificationDAO"/>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>   <!-- Abstract service using the Geronimo Transaction
>> Manager
>> >> -->
>> >> >>> >>> >>    <bean id="abstractService" abstract="true"
>> >> >>> >>> >>
>> >> >>> >>>
>> >> >>>
>> >>
>> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
>> >> >>> >>> >>         <property name="transactionManager">
>> >> >>> >>> >>            <osgi:reference
>> >> >>> >>> >>
>> >> >>>
>> >>
>> interface="org.springframework.transaction.PlatformTransactionManager"/>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="notificationService"
>> >> >>> >>> >>          parent="abstractService"
>> >> >>> >>> >>
>> >> >>> >>> >>
>> >> >>> >>>
>> >> >>>
>> >>
>> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
>> >> >>> >>> >>
>> >> >>> >>> >>        <property name="target">
>> >> >>> >>> >>            <ref bean="notificationServiceTarget" />
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>
>> >> >>> >>> >>        <property name="transactionAttributes">
>> >> >>> >>> >>            <props>
>> >> >>> >>> >>                <prop key="*">PROPAGATION_REQUIRED</prop>
>> >> >>> >>> >>            </props>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >> 4) Route
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="myPolicy"
>> >> >>> >>> class="org.apache.camel.processor.RedeliveryPolicy">
>> >> >>> >>> >>        <property name="maximumRedeliveries" value="1"/>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="txErrorHandler"
>> >> >>> >>> >>
>> >> class="org.apache.camel.spring.spi.TransactionErrorHandlerBuilder">
>> >> >>> >>> >>        <property name="springTransactionPolicy"
>> >> >>> >>> >> ref="PROPAGATION_REQUIRED"/>
>> >> >>> >>> >>        <property name="redeliveryPolicy" ref="myPolicy"/>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>    <bean id="PROPAGATION_REQUIRED"
>> >> >>> >>> >> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>> >> >>> >>> >>        <property name="transactionManager">
>> >> >>> >>> >>            <osgi:reference
>> >> >>> >>> >>
>> >> >>>
>> >>
>> interface="org.springframework.transaction.PlatformTransactionManager"/>
>> >> >>> >>> >>        </property>
>> >> >>> >>> >>    </bean>
>> >> >>> >>> >>
>> >> >>> >>> >>        <camel:route errorHandlerRef="txErrorHandler">
>> >> >>> >>> >>            <camel:from ref="queueQuickFixInEndpoint" />
>> >> >>> >>> >>            <camel:convertBodyTo type="quickfix.Message" />
>> >> >>> >>> >>            <camel:transacted ref="PROPAGATION_REQUIRED"/>
>> >> >>> >>> >>            <camel:bean ref="serviceHelper"
>> >> >>> method="createNotification"
>> >> >>> >>> />
>> >> >>> >>> >>            <camel:bean ref="serviceHelper"
>> >> method="generateError" />
>> >> >>> >>> >>            <camel:to ref="directNotificationEndpoint" />
>> >> >>> >>> >>        </camel:route>
>> >> >>> >>> >>
>> >> >>> >>> >> Any ideas are welcome
>> >> >>> >>> >>
>> >> >>> >>> >> Regards,
>> >> >>> >>> >>
>> >> >>> >>> >> Charles Moulliard
>> >> >>> >>> >> Senior Enterprise Architect
>> >> >>> >>> >> Apache Camel Committer
>> >> >>> >>> >>
>> >> >>> >>> >> *****************************
>> >> >>> >>> >> blog : http://cmoulliard.blogspot.com
>> >> >>> >>> >>
>> >> >>> >>> >>
>> >> >>> >>> >> On Thu, Jul 2, 2009 at 5:02 PM, Charles Moulliard <
>> >> >>> cmoulli...@gmail.com
>> >> >>> >>> >wrote:
>> >> >>> >>> >>
>> >> >>> >>> >>> OK. I will try to create my own Hibernate JTATransaction
>> >> manager as
>> >> >>> the
>> >> >>> >>> >>> existing try to perform a JNDI lookup to find the
>> transaction
>> >> >>> manager
>> >> >>> >>> on
>> >> >>> >>> >>> OSGI platform (inheritage from J2EE world)
>> >> >>> >>> >>>
>> >> >>> >>> >>>
>> >> >>> >>> >>>
>> >> >>> >>>
>> >> >>>
>> >>
>> http://mail-archives.apache.org/mod_mbox/servicemix-dev/200904.mbox/%3cb23ecedc0904020615y55df4d0fhb303a2ea22df7...@mail.gmail.com%3e
>> >> >>> >>> >>>
>> >> >>> >>> >>>
>> >> >>> >>> >>> Charles Moulliard
>> >> >>> >>> >>> Senior Enterprise Architect
>> >> >>> >>> >>> Apache Camel Committer
>> >> >>> >>> >>>
>> >> >>> >>> >>> *****************************
>> >> >>> >>> >>> blog : http://cmoulliard.blogspot.com
>> >> >>> >>> >>>
>> >> >>> >>> >>>
>> >> >>> >>> >>> On Thu, Jul 2, 2009 at 4:56 PM, Claus Ibsen <
>> >> claus.ib...@gmail.com
>> >> >>> >
>> >> >>> >>> wrote:
>> >> >>> >>> >>>
>> >> >>> >>> >>>> On Thu, Jul 2, 2009 at 4:53 PM, Charles Moulliard<
>> >> >>> >>> cmoulli...@gmail.com>
>> >> >>> >>> >>>> wrote:
>> >> >>> >>> >>>> > queueQuickFixInEndpoint is a JMS queue.
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> > I will add the ref to the transacted and retest
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> > Question : I suppose that rollback will not occur if by
>> >> example
>> >> >>> JMS
>> >> >>> >>> and
>> >> >>> >>> >>>> DB
>> >> >>> >>> >>>> > (=Hibernate) does not use the same TransactionManager
>> and
>> >> don't
>> >> >>> use
>> >> >>> >>> this
>> >> >>> >>> >>>> > spring class together :
>> >> >>> >>> >>>> >
>> org.springframework.transaction.PlatformTransactionManager
>> >> >>> >>> >>>> Yes they must be configured to use the same TX manager.
>> >> >>> >>> >>>>
>> >> >>> >>> >>>>
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> > Regards,
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> > Charles Moulliard
>> >> >>> >>> >>>> > Senior Enterprise Architect
>> >> >>> >>> >>>> > Apache Camel Committer
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> > *****************************
>> >> >>> >>> >>>> > blog : http://cmoulliard.blogspot.com
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> > On Thu, Jul 2, 2009 at 4:46 PM, Claus Ibsen <
>> >> >>> claus.ib...@gmail.com>
>> >> >>> >>> >>>> wrote:
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> >> Transacted also have a ref attribute
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >> <transacted ref="required"/>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >> Is queueQuickFixInEndpoint a JMS queue?
>> >> >>> >>> >>>> >> You need to use a TX manager that can do both JMS and
>> DB.
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >> On Thu, Jul 2, 2009 at 4:31 PM, Charles Moulliard<
>> >> >>> >>> cmoulli...@gmail.com
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>> >> wrote:
>> >> >>> >>> >>>> >> > I have been able to solve my problem by adding the
>> >> following
>> >> >>> bean
>> >> >>> >>> >>>> >> definition
>> >> >>> >>> >>>> >> > :
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> >    <bean id="required"
>> >> >>> >>> >>>> >> >
>> >> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>> >> >>> >>> >>>> >> >        <property name="transactionManager">
>> >> >>> >>> >>>> >> >            <osgi:reference
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> interface="org.springframework.transaction.PlatformTransactionManager"/>
>> >> >>> >>> >>>> >> >        </property>
>> >> >>> >>> >>>> >> >    </bean>
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> > and in the route
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> >        <camel:route>
>> >> >>> >>> >>>> >> >            <camel:from ref="queueQuickFixInEndpoint"
>> />
>> >> >>> >>> >>>> >> >            <camel:convertBodyTo
>> type="quickfix.Message"
>> >> />
>> >> >>> >>> >>>> >> >            <camel:transacted/>
>> >> >>> >>> >>>> >> >            <camel:policy ref="required" />
>> >> >>> >>> >>>> >> >            <camel:bean ref="serviceHelper"
>> >> >>> >>> >>>> method="createNotification" />
>> >> >>> >>> >>>> >> >            <camel:bean ref="serviceHelper"
>> >> >>> method="generateError"
>> >> >>> >>> />
>> >> >>> >>> >>>> >> >            <camel:to ref="directNotificationEndpoint"
>> />
>> >> >>> >>> >>>> >> >        </camel:route>
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> > Unfortunately, the rollback does not occur in the DB
>> and
>> >> 6
>> >> >>> >>> records
>> >> >>> >>> >>>> have
>> >> >>> >>> >>>> >> been
>> >> >>> >>> >>>> >> > created by the method createNotification when error
>> has
>> >> been
>> >> >>> >>> raised
>> >> >>> >>> >>>> by
>> >> >>> >>> >>>> >> the
>> >> >>> >>> >>>> >> > method generateError.
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> > What is missing ?
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> > Charles Moulliard
>> >> >>> >>> >>>> >> > Senior Enterprise Architect
>> >> >>> >>> >>>> >> > Apache Camel Committer
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> > *****************************
>> >> >>> >>> >>>> >> > blog : http://cmoulliard.blogspot.com
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> > On Thu, Jul 2, 2009 at 4:19 PM, Charles Moulliard <
>> >> >>> >>> >>>> cmoulli...@gmail.com
>> >> >>> >>> >>>> >> >wrote:
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> >> When I compare the example :
>> >> >>> >>> JMSTransactionalClientRollbackTest.xml
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>     <!-- START SNIPPET: e1 -->
>> >> >>> >>> >>>> >> >>     <!-- setup JMS connection factory -->
>> >> >>> >>> >>>> >> >>     <bean id="jmsConnectionFactory"
>> >> >>> >>> >>>> >> >>
>> class="org.apache.activemq.ActiveMQConnectionFactory">
>> >> >>> >>> >>>> >> >>         <property name="brokerURL"
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> value="vm://localhost?broker.persistent=false&amp;broker.useJmx=false"/>
>> >> >>> >>> >>>> >> >>     </bean>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>     <!-- setup spring jms TX manager -->
>> >> >>> >>> >>>> >> >>     <bean id="jmsTransactionManager"
>> >> >>> >>> >>>> >> >>
>> >> >>> >>>
>> class="org.springframework.jms.connection.JmsTransactionManager">
>> >> >>> >>> >>>> >> >>         <property name="connectionFactory"
>> >> >>> >>> >>>> ref="jmsConnectionFactory"/>
>> >> >>> >>> >>>> >> >>     </bean>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>     <!-- define our activemq component -->
>> >> >>> >>> >>>> >> >>     <bean id="activemq"
>> >> >>> >>> >>>> >> >>
>> >> >>> class="org.apache.activemq.camel.component.ActiveMQComponent">
>> >> >>> >>> >>>> >> >>         <property name="connectionFactory"
>> >> >>> >>> >>>> ref="jmsConnectionFactory"/>
>> >> >>> >>> >>>> >> >>         <!-- define the jms consumer/producer as
>> >> transacted
>> >> >>> -->
>> >> >>> >>> >>>> >> >>         <property name="transacted" value="true"/>
>> >> >>> >>> >>>> >> >>         <!-- setup the transaction manager to use
>> -->
>> >> >>> >>> >>>> >> >>         <!-- if not provided then Camel will
>> automatic
>> >> use a
>> >> >>> >>> >>>> >> >> JmsTransactionManager, however if you
>> >> >>> >>> >>>> >> >>              for instance use a JTA transaction
>> manager
>> >> then
>> >> >>> you
>> >> >>> >>> >>>> must
>> >> >>> >>> >>>> >> >> configure it -->
>> >> >>> >>> >>>> >> >>         <property name="transactionManager"
>> >> >>> >>> >>>> >> ref="jmsTransactionManager"/>
>> >> >>> >>> >>>> >> >>     </bean>
>> >> >>> >>> >>>> >> >>     <!-- END SNIPPET: e1 -->
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>     <!-- START SNIPPET: e2 -->
>> >> >>> >>> >>>> >> >>     <camelContext xmlns="
>> >> >>> http://camel.apache.org/schema/spring
>> >> >>> >>> ">
>> >> >>> >>> >>>> >> >>         <route>
>> >> >>> >>> >>>> >> >>             <!-- 1: from the jms queue -->
>> >> >>> >>> >>>> >> >>             <from uri="activemq:queue:okay"/>
>> >> >>> >>> >>>> >> >>             <!-- 2: mark this route as transacted
>> -->
>> >> >>> >>> >>>> >> >>             <transacted/>
>> >> >>> >>> >>>> >> >>             <!-- 3: call our business logic that is
>> >> >>> myProcessor
>> >> >>> >>> -->
>> >> >>> >>> >>>> >> >>             <process ref="myProcessor"/>
>> >> >>> >>> >>>> >> >>             <!-- 4: if success then send it to the
>> mock
>> >> -->
>> >> >>> >>> >>>> >> >>             <to uri="mock:result"/>
>> >> >>> >>> >>>> >> >>         </route>
>> >> >>> >>> >>>> >> >>     </camelContext>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> with mine.
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> What is different concerns the TransactionManager
>> used.
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> In the example, this is the Spring one:
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>     <!-- setup spring jms TX manager -->
>> >> >>> >>> >>>> >> >>     <bean id="jmsTransactionManager"
>> >> >>> >>> >>>> >> >>
>> >> >>> >>>
>> class="org.springframework.jms.connection.JmsTransactionManager">
>> >> >>> >>> >>>> >> >>         <property name="connectionFactory"
>> >> >>> >>> >>>> ref="jmsConnectionFactory"/>
>> >> >>> >>> >>>> >> >>     </bean>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> and in my case, ActiveMQ is configured to use
>> Geronimo
>> >> >>> >>> Transaction
>> >> >>> >>> >>>> >> Manager
>> >> >>> >>> >>>> >> >> bundle (which in fact uses spring Transaction
>> manager :
>> >> >>> >>> >>>> >> >>
>> >> org.springframework.transaction.jta.JtaTransactionManager;)
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> I suppose that in the example, the policy is defined
>> by
>> >> >>> default
>> >> >>> >>> by
>> >> >>> >>> >>>> >> spring
>> >> >>> >>> >>>> >> >> when instantiating the class :
>> >> >>> >>> >>>> >> >>
>> org.springframework.jms.connection.JmsTransactionManager
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> Is it possible to do the same using a JtaTransaction
>> >> manager
>> >> >>> ?
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> Regards,
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> Charles Moulliard
>> >> >>> >>> >>>> >> >> Senior Enterprise Architect
>> >> >>> >>> >>>> >> >> Apache Camel Committer
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> *****************************
>> >> >>> >>> >>>> >> >> blog : http://cmoulliard.blogspot.com
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >> On Thu, Jul 2, 2009 at 3:57 PM, Claus Ibsen <
>> >> >>> >>> claus.ib...@gmail.com>
>> >> >>> >>> >>>> >> wrote:
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>> Hi
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>> Yeah you need to add all the spring transaction
>> stuff.
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>> On Thu, Jul 2, 2009 at 3:47 PM, Charles Moulliard<
>> >> >>> >>> >>>> cmoulli...@gmail.com
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >> >>> wrote:
>> >> >>> >>> >>>> >> >>> > Camel generates the following error with my route
>> :
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>> > Route
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>> >        <camel:route>
>> >> >>> >>> >>>> >> >>> >            <camel:from
>> ref="queueQuickFixInEndpoint"
>> >> />
>> >> >>> >>> >>>> >> >>> >            <camel:convertBodyTo
>> >> type="quickfix.Message"
>> >> >>> />
>> >> >>> >>> >>>> >> >>> >            <camel:transacted/>
>> >> >>> >>> >>>> >> >>> >            <camel:bean ref="serviceHelper"
>> >> >>> >>> >>>> >> method="createNotification"
>> >> >>> >>> >>>> >> >>> />
>> >> >>> >>> >>>> >> >>> >            <camel:bean ref="serviceHelper"
>> >> >>> >>> method="generateError"
>> >> >>> >>> >>>> />
>> >> >>> >>> >>>> >> >>> >            <camel:to
>> ref="directNotificationEndpoint"
>> >> />
>> >> >>> >>> >>>> >> >>> >        </camel:route>
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>> > It seems that policy must be defined but in the
>> >> example
>> >> >>> here
>> >> >>> >>> it
>> >> >>> >>> >>>> is
>> >> >>> >>> >>>> >> not
>> >> >>> >>> >>>> >> >>> > mentioned :
>> >> >>> >>> http://camel.apache.org/transactional-client.html
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>> > Error :
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>> > 15:43:07,838 | ERROR | xtenderThread-30 |
>> >> >>> >>> ContextLoaderListener
>> >> >>> >>> >>>> >> >>>    |
>> >> >>> >>> >>>> >> >>> > BundleApplicationContextListener   50 |
>> Application
>> >> >>> context
>> >> >>> >>> >>>> refresh
>> >> >>> >>> >>>> >> >>> failed
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>>
>> (OsgiBundleXmlApplicationContext(bundle=com.xpectis.x3s.x3s-core,
>> >> >>> >>> >>>> >> >>> > config=osgibundle:/META-INF/spring/*.xml))
>> >> >>> >>> >>>> >> >>> > org.apache.camel.RuntimeCamelException:
>> >> >>> >>> >>>> >> >>> java.lang.IllegalArgumentException:
>> >> >>> >>> >>>> >> >>> > policy must be specified on: Transacted[ref:
>> null]
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:986)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:121)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:465)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:235)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:358)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136)
>> >> >>> >>> >>>> >> >>> >    at java.lang.Thread.run(Thread.java:619)
>> >> >>> >>> >>>> >> >>> > Caused by: java.lang.IllegalArgumentException:
>> policy
>> >> >>> must be
>> >> >>> >>> >>>> >> specified
>> >> >>> >>> >>>> >> >>> on:
>> >> >>> >>> >>>> >> >>> > Transacted[ref: null]
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >>
>> >> >>> org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:258)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.model.TransactedDefinition.createProcessor(TransactedDefinition.java:129)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:226)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:111)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:294)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:120)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:552)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:969)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:946)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:165)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >>
>> >> >>> org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:863)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:99)
>> >> >>> >>> >>>> >> >>> >    at
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>>
>> >> >>> >>>
>> >> >>>
>> >>
>> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:119)
>> >> >>> >>> >>>> >> >>> > Charles Moulliard
>> >> >>> >>> >>>> >> >>> > Senior Enterprise Architect
>> >> >>> >>> >>>> >> >>> > Apache Camel Committer
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>> > *****************************
>> >> >>> >>> >>>> >> >>> > blog : http://cmoulliard.blogspot.com
>> >> >>> >>> >>>> >> >>> >
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>> --
>> >> >>> >>> >>>> >> >>> Claus Ibsen
>> >> >>> >>> >>>> >> >>> Apache Camel Committer
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>> Open Source Integration: http://fusesource.com
>> >> >>> >>> >>>> >> >>> Blog: http://davsclaus.blogspot.com/
>> >> >>> >>> >>>> >> >>> Twitter: http://twitter.com/davsclaus
>> >> >>> >>> >>>> >> >>>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >>
>> >> >>> >>> >>>> >> >
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >> --
>> >> >>> >>> >>>> >> Claus Ibsen
>> >> >>> >>> >>>> >> Apache Camel Committer
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >> Open Source Integration: http://fusesource.com
>> >> >>> >>> >>>> >> Blog: http://davsclaus.blogspot.com/
>> >> >>> >>> >>>> >> Twitter: http://twitter.com/davsclaus
>> >> >>> >>> >>>> >>
>> >> >>> >>> >>>> >
>> >> >>> >>> >>>>
>> >> >>> >>> >>>>
>> >> >>> >>> >>>>
>> >> >>> >>> >>>> --
>> >> >>> >>> >>>> Claus Ibsen
>> >> >>> >>> >>>> Apache Camel Committer
>> >> >>> >>> >>>>
>> >> >>> >>> >>>> Open Source Integration: http://fusesource.com
>> >> >>> >>> >>>> Blog: http://davsclaus.blogspot.com/
>> >> >>> >>> >>>> Twitter: http://twitter.com/davsclaus
>> >> >>> >>> >>>>
>> >> >>> >>> >>>
>> >> >>> >>> >>>
>> >> >>> >>> >>
>> >> >>> >>> >
>> >> >>> >>> >
>> >> >>> >>> >
>> >> >>> >>> > --
>> >> >>> >>> > Claus Ibsen
>> >> >>> >>> > Apache Camel Committer
>> >> >>> >>> >
>> >> >>> >>> > Open Source Integration: http://fusesource.com
>> >> >>> >>> > Blog: http://davsclaus.blogspot.com/
>> >> >>> >>> > Twitter: http://twitter.com/davsclaus
>> >> >>> >>> >
>> >> >>> >>>
>> >> >>> >>>
>> >> >>> >>>
>> >> >>> >>> --
>> >> >>> >>> Claus Ibsen
>> >> >>> >>> Apache Camel Committer
>> >> >>> >>>
>> >> >>> >>> Open Source Integration: http://fusesource.com
>> >> >>> >>> Blog: http://davsclaus.blogspot.com/
>> >> >>> >>> Twitter: http://twitter.com/davsclaus
>> >> >>> >>>
>> >> >>> >>
>> >> >>> >
>> >> >>> >
>> >> >>> >
>> >> >>> > --
>> >> >>> > Cheers,
>> >> >>> > Guillaume Nodet
>> >> >>> > ------------------------
>> >> >>> > Blog: http://gnodet.blogspot.com/
>> >> >>> > ------------------------
>> >> >>> > Open Source SOA
>> >> >>> > http://fusesource.com
>> >> >>> >
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> --
>> >> >>> Claus Ibsen
>> >> >>> Apache Camel Committer
>> >> >>>
>> >> >>> Open Source Integration: http://fusesource.com
>> >> >>> Blog: http://davsclaus.blogspot.com/
>> >> >>> Twitter: http://twitter.com/davsclaus
>> >> >>>
>> >> >>
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Cheers,
>> >> > Guillaume Nodet
>> >> > ------------------------
>> >> > Blog: http://gnodet.blogspot.com/
>> >> > ------------------------
>> >> > Open Source SOA
>> >> > http://fusesource.com
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Claus Ibsen
>> >> Apache Camel Committer
>> >>
>> >> Open Source Integration: http://fusesource.com
>> >> Blog: http://davsclaus.blogspot.com/
>> >> Twitter: http://twitter.com/davsclaus
>> >>
>> >
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>
>

Reply via email to