如何通过Spring配置的JtaTransactionManager对象与allowCustomIsolationLevels设置为真正使得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的JTA事务管理器:/事务管理。但是,WebSphere没有相同的JNDI位置。
Spring 2.5.x提供了一种以通用方式获取JTA事务管理器的方法。
<tx:jta-transaction-manager />
这得到了的JtaTransactionManager对象,并将其定义为与ID transactionManager的的bean。
我查看了Spring TX schema,但唯一可用的设置是设置特定的隔离级别,但不仅仅是允许使用自定义级别(如其他地方定义的)。 如何设置allowCustomIsolationLevels属性使用tx:jta-transaction-manager标记?
我想我可能已经找到了一个可能的解决方案,但还是想看看是否有与<办法TX:JTA事务管理器>。 解决方法似乎是从第一个代码块中简单地删除属性“transactionManagerName”,Spring将尝试通过JNDI自动检测事务管理器。 – plusjeff 2010-10-12 19:04:03