gpt4 book ai didi

java - Spring JTA TransactionManager 配置 : Supporting both Tomcat and JBoss

转载 作者:IT老高 更新时间:2023-10-28 13:48:11 29 4
gpt4 key购买 nike

我有一个使用 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 中,而不是创建更多的配置文件 [ 好像还不够 ;) ]。

关于java - Spring JTA TransactionManager 配置 : Supporting both Tomcat and JBoss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/117751/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com