我们在Spring配置中将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>发布于 2009-11-23 15:55:17
是的,没关系。您所看到的堆栈跟踪也是正常的:<tx:jta-transaction-manager/>试图从许多不同的标准位置获取事务管理器;对于每一个失败的JNDI查找,您都会看到javax.naming.NameNotFoundException。
默认情况下,java:/TransactionManager是JBoss绑定的地方;其他servlet容器将默认为java:/comp/TransactionManager,我认为这应该是TM的“标准”位置。
来自春季参考文献
对于标准场景,包括WebLogic、WebSphere和OC4J,请考虑使用方便的
<tx:jta-transaction-manager/>配置元素。这将自动检测底层服务器,并选择平台可用的最佳事务管理器。这意味着您不必显式地配置特定于服务器的适配器类(如下面几节所述);它们将被自动选择,标准JtaTransactionManager作为默认回退。
发布于 2009-11-23 14:57:51
一个常见的“错误”是将诸如jta.jar和/或jbossall-client.jar之类的东西捆绑在您部署的J2EE组件中。请再检查一遍,如果是这样的话,请把它们移除。
https://stackoverflow.com/questions/1783540
复制相似问题