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 />
さて、単一のメソッドからのデータアクセス呼び出しに宣言的な @Transactional アノテーションを使用できるように、Spring jdbc トランザクションを JTA トランザクションマネージャーのスコープ内に登録する方法を教えてください。