簡體   English   中英

Spring JTA配置-如何設置TransactionManager?

[英]Spring JTA configuration - how to set TransactionManager?

我們在Spring config中將Spring事務配置為:

<tx:jta-transaction-manager/>

我收集到這意味着Spring將自動發現底層的JTA實現。 因此,當我們啟動JBoss時,在Spring搜索時會看到以下消息:

[JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran
sactionManager]
javax.naming.NameNotFoundException: TransactionManager not bound
<<Big stack trace>>    
<<More of the same>>

然后最終看到:

[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction
Manager]
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT
ransaction@1f78dde

問題是-我們如何編輯<tx:jta-transaction-manager/>標記以顯式配置java:/Transaction Manager JTA實現,以便避免日志中所有這些堆棧跟蹤? (我不希望只更改Log4J日志記錄級別)


更新 :我用下面的配置替換了<tx:jta-transaction-manager/> ,它似乎可以正常工作..我猜這還好嗎?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>

是的,沒關系。 您看到的堆棧跟蹤也沒問題: <tx:jta-transaction-manager/>嘗試從多個不同的標准位置獲取事務管理器。 對於每次失敗的JNDI查找,您都會看到javax.naming.NameNotFoundException

JBoss默認綁定到java:/TransactionManager 其他servlet容器將默認為java:/comp/TransactionManager ,我認為這應該是TM的“標准”位置。

Spring參考文檔中

對於包括WebLogic,WebSphere和OC4J在內的標准方案,請考慮使用方便的<tx:jta-transaction-manager/>配置元素。 這將自動檢測底層服務器,並選擇適用於該平台的最佳事務管理器。 這意味着您不必顯式配置服務器特定的適配器類(如以下各節所述)。 寧可自動選擇它們,也可以使用標准的JtaTransactionManager作為默認后備。

一個常見的“錯誤”是將jta.jar和/或jbossall-client.jar東西捆綁在您部署的J2EE組件中。 請仔細檢查並在這種情況下將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM