Hi Willem,

You confirm what I was suspected --> camel-jdbc is not a transactional
component.

Regards,

Charles



On Wed, Mar 23, 2011 at 8:22 AM, Willem Jiang <[email protected]> wrote:
> 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','[email protected]','+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
>

Reply via email to