2010-10-14 300 views
4

我正在将各种Spring bean转换为JNDI查找过程。目前我正在使用Jetty进行测试。我已经根据码头文档配置的UserTransaction和它的作品:如何在Jetty上设置事务超时JNDI Atomikos配置

<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> 

任何想法?

回答

1

您需要通过您的码头环境中的jta.properties文件来配置atomikos事务管理器。
例如,看看下面的目录中的码头分布中(我使用的是6.1.24):

  • /jetty-6.1.24/contexts/test-jndi.d/WEB-INF/classes
    • jta.properties

一套名为com.atomikos.icatch.max_timeout的财产,这是在默认的示例文件注释。
然后确保您使用正确配置的上下文来启动您的码头容器。

+1

感谢您的回答。你有没有任何想法,如果这可以完成没有'jta.properties'文件? – HDave 2010-10-22 12:52:45

+0

我想这可能是可能的,但您必须将事务管理器中的值设置为服务器启动过程的一部分。 – crowne 2010-10-22 18:33:06

+0

是的,没有jta.properties是可能的。您可以将参数传递给com.atomikos.icatch.config.UserTransactionServiceImp.UserTransactionServiceImp类。如果你使用弹簧,你可以在那里做,也可以通过编程来完成。 – arrehman 2012-11-14 15:21:35