camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: Data not rollbacked from DB - camel-jdbc
Date Wed, 23 Mar 2011 07:22:04 GMT
Hi Charles,

I just went through the code of camel-jdbc and camel-sql.
camel-sql is use the JdbcTemplate which can interact with the Spring 
transaction manage rightly.
camel-jdbc just create a statment object base on the data source, that 
could explain why the rollback doesn't work for you.

Willem
On 3/23/11 2:14 PM, Charles Moulliard wrote:
> I did that to simulate an error and check if the rollback will occur.
>
> REMARK : If I use the same camel routes but use SQL component instead of
> JDBC, then it works !!!
>
> On 23/03/11 04:59, Willem Jiang wrote:
>> Hi Charles,
>>
>> You route is a bit interesting, you just throw the exception after the
>> exchange is sent to the camel-jdbc endpoint.
>> Can you tell me why did you do that ?
>>
>> Willem
>>
>> On 3/22/11 11:59 PM, Charles Moulliard wrote:
>>> Hi,
>>>
>>> I have created a transactional route in camel where I use camel-jdbc
>>> component but the data are not rollbacked from DB when an error
>>> occurs. Is there something wrong in my config ?
>>>
>>> Here is the config
>>>
>>>
>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="
>>> http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>> http://camel.apache.org/schema/spring
>>> http://camel.apache.org/schema/spring/camel-spring.xsd
>>> ">
>>>
>>> <bean id="jdbcReportIncident"
>>> class="com.fusesource.webinars.persistence.JdbcReportIncident"/>
>>>
>>> <bean id="required"
>>> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>>> <property name="transactionManager" ref="txManager"/>
>>> <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
>>> </bean>
>>>
>>> <bean id="txManager"
>>> class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
>>>
>>> <property name="dataSource" ref="reportdb"/>
>>> </bean>
>>>
>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
>>>
>>> <route id="insert-from-file">
>>> <from uri="file://target/datainsert?moveFailed=failed"/>
>>> <transacted ref="required"/>
>>> <split>
>>> <tokenize token=","/>
>>> <setBody>
>>> <simple>INSERT INTO REPORT.T_INCIDENT (INCIDENT_REF,
>>>
>>> INCIDENT_DATE,GIVEN_NAME,FAMILY_NAME,SUMMARY,DETAILS,EMAIL,PHONE)
>>> VALUES
>>> ('${body}','2011-03-21','Charles','Moulliard','Incident
>>> Webinar-${body}','This is a
>>> report incident for
>>> webinar-001','cmoulliard@fusesource.com','+111 10 20 300')
>>> </simple>
>>> </setBody>
>>> <log message=">>> SQL Query : ${body}"/>
>>> <to uri="jdbc:reportdb"/>
>>> <bean ref="jdbcReportIncident" method="generateError"/>
>>> <log message=">>> Result : ${body}"/>
>>> </split>
>>> </route>
>>> </camelContext>
>>>
>>> <bean id="reportdb"
>>> class="org.springframework.jdbc.datasource.DriverManagerDataSource">
>>> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
>>> <property name="url" value="jdbc:hsqldb:hsql://localhost/reportdb"/>
>>> <property name="username" value="sa"/>
>>> <property name="password" value=""/>
>>> </bean>
>>>
>>> </beans>
>>>
>>> Regards,
>>>
>>> Charles Moulliard
>>>
>>> Sr. Principal Solution Architect - FuseSource
>>> Apache Committer
>>>
>>> Blog : http://cmoulliard.blogspot.com
>>> Twitter : http://twitter.com/cmoulliard
>>> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>>> Skype: cmoulliard
>>>
>>
>>
>


-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang

Mime
View raw message