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.jar
等jta.jar
捆绑在您部署的J2EE组件中。 如果是这种情况,请仔细检查并删除它们。