【发布时间】:2011-04-24 11:13:57
【问题描述】:
问题
如何配置 JtaTransactionManager 对象,通过 Spring 将 allowCustomIsolationLevels 设置为 true,以便 Spring 配置可以跨多个应用程序服务器使用?
背景:
我有一个应用程序当前用完了 JBossAS,我正试图让它在 WebSphere 中运行。我目前遇到的唯一问题是使用正确的设置注入正确的 JTA 事务管理器。
这是旧设置
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName">
<value>java:/TransactionManager</value>
</property>
<property name="allowCustomIsolationLevels" value="true" />
</bean>
这很有效,因为 JBossAS 在 JNDI 位置 java:/TransactionManager 定义了它的 JTA 事务管理器。但是,WebSphere 没有相同的 JNDI 位置。
Spring 2.5.x 提供了一种以通用方式获取 JTA 事务管理器的方法。
<tx:jta-transaction-manager />
这将获取 JtaTransactionManager 对象并将其定义为 id 为 transactionManager 的 bean。
我查看了Spring TX schema,但唯一可用的设置是设置特定的隔离级别,而不仅仅是允许使用自定义级别(如其他地方定义的那样)。 如何使用 tx:jta-transaction-manager 标签设置 allowCustomIsolationLevels 属性?
【问题讨论】:
-
我想我可能已经找到了一个可能的解决方案,但仍然想看看
是否有办法。解决方法似乎是简单地从第一个代码块中删除属性“transactionManagerName”,Spring 将尝试通过 JNDI 自动检测事务管理器。