Apache Tomcat 6支持JTA吗?

5
我对在Apache Tomcat上使用Spring框架的JTA存在一些困惑,并希望有人能够澄清,因为经过多次研究,我似乎还没有找到正确的答案。我正在使用Spring Framework开发Web应用程序,将在Apache Tomcat 6上运行。我在某个地方读到,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支持来处理Hibernate?的重复问题。 - seenukarthi
相似的成分但不同的配方。我认为这个问题是在问如何在Tomcat 6上使用JTA。而我的问题是质疑Tomcat 6是否已经允许JTA - 因为当我使用JavaEE @Transactional注释时 - 它可以工作。 - SoftwareDeveloper
1
你不应该在2015年开发任何新的东西来运行在Tomcat 6上。你已经过时了两个主要版本。 - user207421
@zeroflagL也许就是我的问题的答案。使用javax.transaction.transactional注释有效,可能意味着它与JTA无关,而是与底层的JDBC本地事务有关。 - SoftwareDeveloper
我明白了。JTA提供了一些更复杂的功能,但普通事务确实始终可用。 - a better oliver
显示剩余3条评论
3个回答

4
答案是:不提供。Tomcat 6.x (7&8)没有内置JTA,因为它们没有一个必须作为单独组件来监视多个资源(例如datasources)的事务管理器。
之前提到的答案如何在Hibernate中使用Tomcat 6的JTA支持?已经给出了可以与Tomcat一起使用的其他JTA事务管理器的列表。
Spring通过平台事务管理器(TM)支持声明式事务管理,并提供一些实现(例如datasources),使得@Transactional能够在没有附加TM的情况下在单个资源上工作。 理解Spring框架事务抽象提供了更多详细信息,Spring Boot可以轻松配置Atomikos或Bitronix事务管理器在嵌入式Tomcat上运行。

0

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


0

是的 :-)

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

关键是使用组件化的JTA实现。

干杯


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接