【问题标题】:Does Apache Tomcat 6 support JTA?Apache Tomcat 6 是否支持 JTA?
【发布时间】:2015-10-16 12:57:10
【问题描述】:

我对在 Apache Tomcat 上的 Spring 框架中使用 JTA 有一些困惑,我希望有人能澄清一下,因为经过多次研究我似乎还没有找到正确的答案。

我正在使用 Spring Framework 开发一个在 Apache Tomcat 6 上运行的 Web 应用程序。

我在某处读到 Spring 确实支持 JTA,但它委托给底层 JavaEE 应用程序服务器。现在这是我感到困惑的地方,因为我 Tomcat 不是一个完整的 JavaEE 应用程序服务器——它只是一个 servlet 容器,而且我相信它不像完整的 JavaEE 应用程序服务器(Glassfish/Wildfly 等)那样提供 JTA 实现。可以。

但是当我执行以下操作时,它的交易方面会起作用:

@Transactional
public class ServiceClassImpl implements ServiceInterface {
// code here that involves transactions e.g. calling DAO code
...
}

所以,我很困惑。希望有人能赐教。

【问题讨论】:

  • 成分相似但配方不同。我认为这个问题询问如何在 Tomcat 6 上使用 JTA。而我的问题是质疑 Tomcat 6 是否已经允许 JTA - 因为当我使用 JavaEE @Transactional 注释时 - 它可以工作
  • 您的代码可以工作的事实与 JTA 有什么关系?
  • 你不应该在 2015 年开发任何新的东西来在 Tomcat 6 中运行。你的两个主要版本已经过时了。
  • @zeroflagL 也许这就是我的问题的答案。使用 javax.transaction.transactional 注释有效的事实可能意味着它与 JTA 无关,但可能与底层 JDBC 本地事务无关。

标签: java spring spring-mvc tomcat jta


【解决方案1】:

JTA 为您提供分布式事务支持,但如果 JTA 不像 Tomcat 那样可用,您仍然可以使用本地 JDBC 事务。

【讨论】:

    【解决方案2】:

    答案是:不。 Tomcat 6.x (7&8) 不提供开箱即用的 JTA,因为它们没有作为单独组件监控多个资源(例如数据源)所需的事务管理器。

    提到的答案How to use JTA support in Tomcat 6 for Hibernate? 已经给出了可以与 Tomcat 一起使用的其他 JTA 事务管理器的列表。

    Spring 通过平台事务管理器 (TM) 支持声明式事务管理,并提供一些实现(例如数据源),使 @Transactional 在单个资源上工作而无需额外的 TM。

    Understanding the Spring Framework transaction abstraction 提供更多详细信息,Spring Boot 可以轻松配置为在嵌入式 Tomcat 上运行 Atomikos 或 Bitronix 事务管理器。

    【讨论】:

      【解决方案3】:

      是的:-)

      JTA 可以在 Tomcat 中使用,例如通过https://www.atomikos.com

      诀窍是使用组件化的 JTA 实现。

      干杯

      【讨论】:

        猜你喜欢
        • 2015-12-18
        • 2011-02-02
        • 2012-04-02
        • 2015-08-31
        • 1970-01-01
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多