2010-10-14 295 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