我们在Spring配置配置我们的Spring的事务为:

<tx:jta-transaction-manager/>

我推测,这意味着春天将自动发现底层的JTA实现。所以,当我们启动的JBoss,我们看到这些消息,而春天的搜索:

[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实现,所以我们避免在日志中的所有这些堆栈跟踪? (I不希望只是改变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

java:/TransactionManager是其中的JBoss结合由默认;其他servlet容器将默认java:/comp/TransactionManager,我认为应该是TM的“标准”位置。

Spring参考文档

  

有关标准方案,包括   的WebLogic,WebSphere和OC4J,考虑   使用便捷   <tx:jta-transaction-manager/>   配置元素。这将   自动检测底层   服务器和选择最好的交易   经理可用的平台。   这意味着你将不必   配置服务器专用适配器   类(如在下文中所讨论的   部分)明确;他们会宁愿   自动选择,与   标准JtaTransactionManager为   默认故障。

其他提示

一个常见的“错误”是捆绑之类的东西在J2EE组件部署jta.jar和/或jbossall-client.jar。仔细检查,请和删除他们,如果是这种情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top