Rest EndpointJTA контейнер удалось откат транзакции не работает jaxrs конечной точки
<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 id="secureBridgeRoute">
<from uri="jetty:https://0.0.0.0:443/jaxrs?sslContextParametersRef=sslContextParameters&matchOnUriPrefix=true&minThreads=8&maxThreads=16" />
<transacted ref="JTA_TRANSACTION" />
<to uri="jetty:http://127.0.0.1:8080/jaxrs?bridgeEndpoint=true&throwExceptionOnFailure=true" />
</route>
DAO
<bean id="dao1" class="com.example.Dao1" activation="eager">
<jpa:context unitname="PU" property="entityManager" type="TRANSACTION" />
</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>
Сервисный метод боб псевдокод
boolean create(entity1, entity2) {
dao1.persist(entity1);
dao2.persist(entity2);
}
Когда dao2 не проходят не удалось, сделка не получить откат. Entity1 вставляется в БД.
Дополнительная информация
1) TransactionManager определение
<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) Моя постоянная единица имеет тип ССТ и спящий режим в качестве поставщика.
3) У меня есть ExceptionMapper, который, когда я смотрю на него, показывает, что транзакция действительно отмечена для отката.
4) Сервисные бобы не разделены на другой комплект.
5) Автосигнализация спящего режима не является истинной.
мне интересно, если:
CXF OutFaultInterceptor был «съеден» исключение, которое, как предполагается, поймано контейнером для отката транзакции. В результате откат не произошел.
Администратор сущностей должен быть тем же самым экземпляром, который был распространен среди всех DAO для отката.
Может быть, мне нужно отделить услугу в другой комплект?
Оцените, сможет ли кто-нибудь сообщить мне правильный подход к обработке транзакций на уровне обслуживания для конечной точки cxf jaxrs.