当前位置: 代码迷 >> java >> Apache Tomcat 6 是否支持 JTA?
  详细解决方案

Apache Tomcat 6 是否支持 JTA?

热度:49   发布时间:2023-07-17 20:18:11.0

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

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

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

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

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

所以,我很困惑。 我希望有人能启发我。

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

提到的答案 已经给出了可以与 Tomcat 一起使用的附加 JTA 事务管理器的列表。

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

提供了更多详细信息,并且可以轻松配置以在嵌入式 Tomcat 上运行 Atomikos 或 Bitronix 事务管理器。

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

是的 :-)

JTA 可以在 Tomcat 中使用,例如通过

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

干杯

  相关解决方案