Spring で JPA と JTA を使用する Web アプリケーションがあります。JBoss と Tomcat の両方をサポートしたいと思います。JBoss で実行する場合は JBoss 独自の TransactionManager を使用し、Tomcat で実行する場合は JOTM を使用したいと考えています。
両方のシナリオが機能していますが、2 つのケースには 2 つの個別の Spring 構成が必要なようです。JOTM では、Spring を使用する必要がありますJotmFactoryBean
。
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction">
<bean class="org.springframework.transaction.jta.JotmFactoryBean"/>
</property>
</bean>
ただし、JBoss では、JNDI から「TransactionManager」を取得する必要があるだけです。
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="resourceRef" value="true" />
<property name="jndiName" value="TransactionManager" />
<property name="expectedType"
value="javax.transaction.TransactionManager" />
</bean>
</property>
</bean>
2 つの異なる構成ファイルを必要とせずに、適切な TransactionManager (JBoss または JOTM) が使用されるようにこれを構成する方法はありますか?