4

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

有任何想法吗?

4

1 回答 1

1

您需要通过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,该属性在默认示例文件中被注释掉。
然后确保使用正确配置的上下文启动码头容器。

于 2010-10-19T16:24:22.660 回答