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

Reply via email to