java - Apache Tomcat 6 是否支持 JTA?

标签 java spring spring-mvc tomcat jta

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

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

我在某处读到 Spring 确实支持 JTA,但它委托(delegate)给底层的 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.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 事务管理器。

关于java - Apache Tomcat 6 是否支持 JTA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31634475/

相关文章:

java - 在没有互联网的情况下上传到亚马逊s3 android

spring - Postgres v. HSQL ConstrainViolationException Wrapping in Spring

java - 如何使用 Spring 表达式语言(或您知道的其他表达式语言)为定义为变量的一些对象列表赋值

java - Spring 工具套件中未解决 Spring 依赖关系

java - 如何从 cordova 插件的服务中访问 Activity ?

java - Selenium Select - 通过部分文本选择下拉选项

java - 在处理中制作随机矩形

java - Primefaces 日历 - 未显示正确的日期

java - 将 "current user"保留在 threadlocal 中

java - Spring Boot @RequestParam 截断传入的 URL ?'s and #' s