【问题标题】:working with JTATransactionManager for transactions?使用 JTATransactionManager 进行交易?
【发布时间】:2014-02-07 07:31:50
【问题描述】:

我在 Tomcat7 中使用 spring3 和 Hibernate4。

我必须使用 JTATransactionManager 并且我有以下配置。

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

在上面的配置中,java:comp/UserTransaction 定义在哪里?

谢谢!

【问题讨论】:

  • 你能澄清一下你想要什么吗?你想要一个 EJB 规范,或者答案是 in the JNDI,还是别的什么?
  • 我想知道什么是 java:comp/UserTransaction 以及它在哪里配置。谢谢!
  • Tomcat 没有 JTA 事务管理器。如果您需要 JTA 支持,您将需要一个更复杂的 Java EE 容器,例如 JBoss、Glassfish 等。或者你必须像 Bitronix 一样自己集成一个 JTA 事务管理器。
  • 尼采特,感谢您的回复。我有两个应用程序。 App1 部署在 tomcat 中,App2 部署在 JBoss 中。从 App1 连接到 App2 并执行一些数据库操作。 App1 也在没有 App2 的情况下对不同的数据库进行一些 db 操作。有时在 App1 中的单个方法中,我需要在单个 tx 中同时调用 App2 和 App1 自己的数据库操作。现在我如何在这里使用 JTATransactionManager?
  • 简短回答:你不能。即使有两个 JBoss 实例,这也不是一项简单的任务,您需要确保两个 JBoss 实例共享同一个分布式事务管理器。我什至不会尝试使用 Tomcat。

标签: java spring hibernate tomcat jta


【解决方案1】:

它是对容器提供的用户事务对象的 JNDI 引用。

它不是用户可配置的(因为您不能自己更改值)。该值取决于您使用的 EE 容器。

关于用户事务对象到底是什么,见Wikipedia

UserTransaction 接口

javax.transaction.UserTransaction 接口提供 应用程序控制事务边界的能力 以编程方式。 Java客户端程序可以使用此接口 或 EJB bean。

UserTransaction.begin() 方法启动一个全局事务并且 将事务与调用线程相关联。这 事务到线程的关联由 事务管理器。

不需要支持嵌套事务。这 UserTransaction.begin 方法抛出 NotSupportedException 时 调用线程已经与事务相关联,并且 事务管理器实现不支持嵌套 交易。

应用程序之间的事务上下文传播是 由底层事务管理器实现提供 客户端和服务器机器。用于的事务上下文格式 传播依赖于协议,并且必须在 客户端和服务器主机。例如,如果事务管理器是 JTS 规范的实现,它将使用事务 CORBA OTS 1.1 中指定的上下文传播格式 规格。事务传播对应用程序是透明的 程序..

【讨论】:

    【解决方案2】:

    JTA 和与之相关的 XA 事务是难以实现和支持的东西。正如@js-nizet 所说,只有 JEE 应用程序服务器有自己的事务管理器实现开箱即用。对于像 Tomcat 或 Jetty 这样的轻量级 Web 服务器,您必须提供外部实现并配置 Spring 以使用它。有很多选择,所以这取决于你。我可以推荐你Jboss' Narayana,但这完全取决于你。由于运行此程序并不那么简单,我建议您阅读以下博客文章,其中详细描述了所有内容 - Configuring Spring and JTA without full Java EE

    这里是another post,介绍如何使用 Spring 和 Jetty 配置 Narayan。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2016-09-10
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多