Sof*_*per 5 java spring tomcat jta spring-mvc
我对在 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
...
}
Run Code Online (Sandbox Code Playgroud)
所以,我很困惑。我希望有人能启发我。
答案是不。Tomcat 6.x (7&8) 不提供开箱即用的 JTA,因为它们没有事务管理器,而事务管理器需要作为单独的组件来监视多个资源(例如数据源)。
提到的答案How to use JTA support in Tomcat 6 for Hibernate? 已经给出了可以与 Tomcat 一起使用的其他 JTA 事务管理器的列表。
Spring 通过平台事务管理器 (TM) 支持声明式事务管理,并提供一些实现(例如数据源),使 @Transactional 在单个资源上工作而无需额外的 TM。
了解 Spring 框架事务抽象提供了更多细节,并且可以轻松配置Spring Boot以在嵌入式 Tomcat 上运行 Atomikos 或 Bitronix 事务管理器。
| 归档时间: |
|
| 查看次数: |
8358 次 |
| 最近记录: |