Управление транзакциями не работает с источниками данных JTA + Bitronix + 2 - PullRequest
0 голосов
/ 05 октября 2018

Я использую JBPM во встроенном режиме с Spring и Bitronix для управления транзакциями.Помимо источника данных JBPM, существует также источник данных приложения, который я использую для прямых запросов к базе данных с использованием JDBCTenmplate.

Я хочу, чтобы транзакция откатилась (как в базе данных приложения, так и в базе данных JBPM) в случае любого исключения.И вызов базы данных приложения, и вызовы JBPM выполняются в одной транзакции.Однако отката не происходит.Похоже, BTM не знает об источнике данных приложения.Пожалуйста, помогите исправить приведенную ниже конфигурацию, чтобы управление транзакциями работало с обоими источниками данных.

Код и конфигурация Spring xml:

    @Transactional(propogation=Propagation.REQUIRED,     isolation=Isolation.REPEATABLE_READ, rollbackFor=Exception.class)

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName"       value="java:comp/env/jdbc/applicationOracleDataSource" />
</bean>

<bean id="jbpm_datasource"     class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/jbpmOracleDataSource" />
</bean>

<bean id="jbpmEMF"     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitName" value="org.jbpm.persistence.spring.jta"/>
  <property name="persistenceXmlLocation" value="classpath:persistence.xml"/>
  <property name="datasource" value="jbpm_datasource"/>
</bean>

enter code here

<bean id="btmConfig" factory-method="getConfiguration"      class="bitronix.tm.TransactionManagerServices"></bean>

<bean id="BitronixTransactionManager" factory-method="getTransactionManager"
      class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig"      destroy-method="shutdown" />

<bean id="jbpmTxManager"      class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="transactionManager" ref="BitronixTransactionManager" />
  <property name="userTransaction" ref="BitronixTransactionManager" />
  <property name="allowCustomeIsolationLevels" value="true" />
</bean>
...