我有一个使用 JPA 和 JTA 和 Spring 的 Web 应用程序。我想同时支持 JBoss 和 Tomcat。在 JBoss 上运行时,我想使用 JBoss 自己的 TransactionManager,在 Tomcat 上运行时,我想使用 JOTM。
我有两种情况,但我现在发现我似乎需要两个单独的 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>
有没有办法配置它,以便使用适当的 TransactionManager - JBoss 或 JOTM - 而无需两个不同的配置文件?