我正在将各种Spring bean转换为JNDI查找.目前我正在使用Jetty来测试它.我根据Jetty文档配置了UserTransaction,它可以工作:
<New id="tx" class="org.mortbay.jetty.plus.naming.Transaction">
<Arg>
<New class="com.atomikos.icatch.jta.UserTransactionImp">
</New>
</Arg>
</New>
这个配置的问题是它不像我的Spring配置那样设置事务超时:
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<!-- Number of seconds before transaction timesout. -->
<property name="transactionTimeout" value="30" />
</bean>
我尝试了以下,但它没有用…出于某种原因,我最终得到了两个用户事务:
<New id="tx" class="org.mortbay.jetty.plus.naming.Transaction">
<Arg>
<New class="com.atomikos.icatch.jta.UserTransactionImp">
<Set name="transactionTimeout">30</Set>
</New>
</Arg>
</New>
有任何想法吗?
解决方法:
您需要通过jetty上下文中的jta.properties文件配置atomikos事务管理器.
例如,查看Jetty发行版中的以下目录(我正在使用6.1.24):
> /jetty-6.1.24/contexts/test-jndi.d/WEB-INF/classes
> jta.properties
设置名为com.atomikos.icatch.max_timeout的属性,该属性在默认样本文件中注释掉.
然后确保使用正确配置的上下文启动jetty容器.