我有一个使用 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 - 而无需两个不同的配置文件?
我认为您忽略了 JNDI 的要点。 JNDI 几乎是为了解决您遇到的问题而编写的!
我认为您可以将其提升一个级别,因此根据您的情况,不要使用“userTransaction”或“来自 JNDI 的 transactionManager”。为什么不将“JtaTransactionManager”添加到 JNDI。这样,您就可以将配置推送到 JNDI 应该所在的位置,而不是创建更多的配置文件 [ 就像还不够;) ]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)