【问题标题】:Container Managed Transaction: Behind the scene容器管理事务:幕后
【发布时间】:2017-05-22 13:55:28
【问题描述】:

我了解在 EJB 中处理事务由 EJB 容器/应用程序服务器负责。

现在我想进一步了解这一点,例如考虑一个场景,其中我们有一个分布式事务(作为事务的一部分有两个以上的资源);我读到有 JTA、JTS 来处理这一切。

我的问题是:

1) 容器是否为事务处理实现了 JTA 规范?

2) Container 是否提供 JTS 服务?

如果#1 和#2 不成立,那么容器如何提供事务支持?它是否从其他一些开源项目“借用”功能来完成这些工作?

谁能帮助理解这一点?

PS:我确实参考了网上和书上的资料,但我仍然不清楚,因此提出了这个问题。

【问题讨论】:

  • 您阅读了实际规格吗?
  • @SteveC : 几页,难以理解,所以想在这里了解一下,然后参考规范。

标签: transactions ejb jta


【解决方案1】:

答案可以在最新的 EJB 规范中找到。

1) 容器是否为事务处理实现了 JTA 规范?

21.3.3 JTA 1.1 要求

EJB 容器必须包含 JTA 1.1 扩展,并且它必须 为企业提供 javax.transaction.UserTransaction 接口 bean 与 bean 管理的事务分界通过 javax.ejb.EJBContext接口,也是在JNDI下的名字 java:comp/UserTransaction,在 EJB 要求的情况下 规格。其他 JTA 接口是低级事务 管理器和资源管理器集成接口,而不是 供企业 bean 直接使用。

2) Container 是否提供 JTS 服务?

13.1.3 与 JTA 和 JTS 的关系

EJB 架构不需要 EJB 容器来支持 JTS 接口。 EJB 架构要求 EJB 容器 支持在 [8] 中定义的 JTA API 和在 [8] 中定义的连接器 API [15]。

3) 如果 #1 和 #2 不正确,那么容器如何提供事务支持?它是否从其他一些开源项目“借用”功能来完成这些工作?

我真的不明白这个问题。一般来说,Oracle/Sun 提供一组接口或规范,然后每个供应商(Glassfish、Weblogic、JBoss 等)都会提供其具体实现。

过去,应用服务器必须经过 Sun 认证才能被视为符合 JEE,我想这与 Oracle 完全一样。因此,您可以通过开源库的方式提供具体的实现,其他人将决定您的服务器是否兼容。

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多