容器管理事务:在幕后

时间:2017-05-22 13:55:28

标签: transactions ejb jta

据我所知,处理EJB中的事务需要由EJB容器/应用程序服务器处理。

现在我想更多地了解这一点,例如考虑我们有一个分布式事务的场景(作为事务的一部分有两个以上的资源);我读到这里有JTA,JTS。

我的问题是:

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

2)Container是否提供了JTS服务?

如果#1和#2不正确,那么容器如何提供交易支持?是否从其他开源项目中“借用”了这些工作的功能?

任何人都可以帮助理解这个吗?

PS:我确实在网上和书上都提到了材料,但我仍然不清楚,因此问这个问题。

1 个答案:

答案 0 :(得分:2)

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

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

  

21.3.3 JTA 1.1要求

     

EJB容器必须包含JTA 1.1扩展,并且必须包含JTA 1.1扩展   为企业提供javax.transaction.UserTransaction接口   bean通过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和。中定义的Connector API   [15]。

3)如果#1和#2不正确,那么容器如何提供交易支持?是否"借用"来自其他一些开源项目的功能来做这些工作吗?

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

过去,应用服务器必须由Sun认证才能被视为符合JEE标准,我认为它与Oracle完全相同。因此,您可以通过开源库提供具体实现,其他人将决定您的服务器是否合规。