Spring JTA配置 – 如何设置TransactionManager?

我们将Spring配置中的Spring事务配置为:

 

我收集这意味着Spring将自动发现底层的JTA实现。 因此,当我们启动JBoss时,我们会在Spring搜索时看到这些消息:

 [JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran sactionManager] javax.naming.NameNotFoundException: TransactionManager not bound <> <> 

然后最终看到:

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

问题是 – 我们如何编辑标签以显式配置java:/Transaction Manager JTA实现,以便我们避免日志中的所有这些堆栈跟踪? (我不想只改变Log4J日志记录级别)


更新 :我用以下配置替换了 ,它似乎工作..我猜这是好的吗?

    

是的,没关系。 您看到的堆栈跟踪也没问题: 尝试从多个不同的标准位置获取事务管理器; 对于每个失败的JNDI查找,您将看到javax.naming.NameNotFoundException

java:/TransactionManager是JBoss默认绑定的地方; 其他servlet容器将默认为java:/comp/TransactionManager ,我认为它应该是TM的“标准”位置。

从Spring参考文档 :

对于标准方案,包括WebLogic,WebSphere和OC4J,请考虑使用方便的配置元素。 这将自动检测底层服务器并选择可用于该平台的最佳事务管理器。 这意味着您不必显式配置特定于服务器的适配器类(如以下部分所述); 他们宁愿自动选择,标准的JtaTransactionManager作为默认回退。

常见的“错误”是将jta.jar和/或jbossall-client.jarjta.jar捆绑在您部署的J2EE组件中。 如果是这种情况,请仔细检查并删除它们。