java – 如何在Jetty JNDI Atomikos配置上设置事务超时

我正在将各种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容器.

上一篇:Hibernate 5与Spring JTA


下一篇:Spring Data JPA无法调用JtaTransactionManager