[ 
https://issues.apache.org/jira/browse/ARIES-1548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15275133#comment-15275133
 ] 

Christian Schneider commented on ARIES-1548:
--------------------------------------------

Of what relevance is the camel route? Can you reproduce the problem with just 
the jaxrs endpoint?

If you can reproduce with just jaxrs then I think your DataSource is not 
enlisting in the JTA transaction. That means that the jta transaction rolls 
back but the DataSource is never notified of it. 
How did you setup your JTA DataSource?

You should use pax-jdbc with the XA support:
https://ops4j1.jira.com/wiki/display/PAXJDBC/Pooling+and+XA+support+for+DataSourceFactory


> JTA container managed transaction rollback not working for jaxrs endpoint
> -------------------------------------------------------------------------
>
>                 Key: ARIES-1548
>                 URL: https://issues.apache.org/jira/browse/ARIES-1548
>             Project: Aries
>          Issue Type: Bug
>          Components: Transaction
>         Environment: JBoss Fuse 6.2.1, JDK7
> Testing environment Windows 7 x64
>            Reporter: Allan Cheong Tyng Huei
>
> Rest Endpoint
> <jaxrs:server id="jaxrs" address="http://127.0.0.1:8080/jaxrs";>
>     <jaxrs:serviceBeans>
>         <ref component-id="service1" />
>         ...
>         ...
>         <ref component-id="serviceX" />
>     </jaxrs:serviceBeans>
>     <jaxrs:providers>
>         <ref component-id="runtimeExceptionMapper" />
>     </jaxrs:providers>
> </jaxrs:server>
> Route
> <route id="secureBridgeRoute">
>     <from 
> uri="jetty:https://0.0.0.0:443/jaxrs?sslContextParametersRef=sslContextParameters&amp;matchOnUriPrefix=true&amp;minThreads=8&amp;maxThreads=16";
>  />
>     <transacted ref="JTA_TRANSACTION" />
>     <to 
> uri="jetty:http://127.0.0.1:8080/jaxrs?bridgeEndpoint=true&amp;throwExceptionOnFailure=true";
>  />
> </route>
> DAO
> <bean id="dao1" class="com.example.Dao1" activation="eager">
>     <jpa:context unitname="PU" property="entityManager" type="TRANSACTION" />
> </bean>
> Service bean
> <bean id="service1" class="com.example.Service1" activation="eager">
>     <property name="dao1" ref="dao1" />
>     <property name="dao2" ref="dao2" />
>     <tx:transaction method="*" value="Required" />
> </bean>
> Service bean method pseudocode
> public void create(entity1, entity2) {
>     dao1.persist(entity1);
>     dao2.persist(entity2);
> }
> When dao2 persist failed, the transaction did not get rolled back. Entity1 is 
> inserted into the DB.
> Additional information
> 1) TransactionManager definition
> <reference id="platformTransactionManager" 
> interface="org.springframework.transaction.PlatformTransactionManager" />
> <bean id="JTA_TRANSACTION" 
> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>     <property name="transactionManager" ref="platformTransactionManager" />
>     <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED" />
> </bean>
> 2) My persistent unit is of type JTA and hibernate as the provider.
> 3) I have an ExceptionMapper, which when I look into it, the stacktrace shows 
> the transaction indeed is marked for rollback.
> 4) The service beans are not separated to another bundle.
> 5) Hibernate autocommit is NOT true.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to