使用 spring 的 [3.1] SimpleJdbcCall 调用 Oracle 数据库中的存储过程。同样,还有另一个使用 JPA 2.0 [hibernate 3.6.8] 的事务。它们都需要在单个 xa 事务中提交。我想为 JTA 使用 JBoss AS 的 [7.1.1] 事务管理器。
从我的 applicationContext.xml >
<!-- injecting jdbc datasource -->
<bean id="CbsTransactionRepository"
class="com.misl.treasury.cbsIntegration.repository.CbsTransactionRepositoryJDBC">
<property name="dataSource" ref="dataSource" />
</bean>
<jee:jndi-lookup id="dataSource" jndi-name="java:/jboss/datasources/CoreDS"/>
<jee:jndi-lookup id="treasuryDataSource" jndi-name="java:/jboss/datasources/TreasuryDS"/>
<!-- JPA entity manager -->
<bean id="treasuryEntityManager"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
</property>
<property name="dataSource" ref="treasuryDataSource" />
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="persistenceXmlLocation" value="classpath*:META-INF/hibernatepersistence.xml" />
</bean>
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="txManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:jboss/TransactionManager" />
<property name="userTransactionName" value="java:jboss/UserTransaction" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
<tx:jta-transaction-manager />
现在,如何在 JTA 事务管理器的范围内登记 spring jdbc 事务,以便我可以使用声明性 @Transactional 注释从单个方法进行数据访问调用?