2012-12-04 61 views
1

我有一個配置爲運行在Tomcat 7上的Bitronix的spring JTA事務管理器。事務管理器正常啓動並且應用程序正常工作。但是我得到了很多調試消息指出與Bitronix jndi查找失敗的Spring JTA事務管理器

沒有JTA事務管理器發現,在後備JNDI位置【JAVA:COMP /事務管理器] 沒有JTA事務管理器發現,在後備JNDI位置【JAVA:PM /事務管理器] 沒有JTA事務管理器發現在回退JNDI位置[java的:應用服務器/事務管理]

等。

我明白,這是和JtaTransactionManager掃描已知JNDI位置並且這不是錯誤,但調試異常。下面是我的事務管理器配置

<bean id="BitronixTransactionManager" factory-method="getTransactionManager" class="bitronix.tm.TransactionManagerServices" 
    destroy-method="shutdown" /> 

和JTA事務管理

​​

我認爲autodetectTransactionManager值設置爲false將阻止這種掃描和所生成的調試例外,但它似乎這個設置沒有效果。

我還嘗試使用transactionManager的以下屬性來設置jndi位置。

<property name="transactionManagerName" value="java:comp/TransactionManager"/> 
<property name="userTransactionName" value="java:comp/UserTransaction"/> 

我使用JTA 1.1,也得到了TransactionSynchronizationRegistry相同查找消息:

DEBUG [主] JtaTransactionManager.findTransactionSynchronizationRegistry(146)|沒有JTA TransactionSynchronizationRegistry發現在默認的JNDI位置【JAVA:COMP/TransactionSynchronizationRegistry]

我真的想明白這一點,而不是僅僅篩選了這一點與我的Log4J

回答

0

大概的問題是,在Tomcat中默認的JNDI位置在java:comp/env中。所以你應該做

<property name="transactionManagerName" value="java:comp/env/TransactionManager"/> 
<property name="transactionSynchronizationRegistryName" value="java:comp/env/TransactionSynchronizationRegistry"/> 
<property name="userTransactionName" value="java:comp/env/UserTransaction"/>