据我所知,处理EJB中的事务需要由EJB容器/应用程序服务器处理。
现在我想更多地了解这一点,例如考虑我们有一个分布式事务的场景(作为事务的一部分有两个以上的资源);我读到这里有JTA,JTS。
1)容器是否实现了JTA规范以进行事务处理?
2)Container是否提供了JTS服务?
如果#1和#2不正确,那么容器如何提供交易支持?是否从其他开源项目中“借用”了这些工作的功能?
任何人都可以帮助理解这个吗?
PS:我确实在网上和书上都提到了材料,但我仍然不清楚,因此问这个问题。答案 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完全相同。因此,您可以通过开源库提供具体实现,其他人将决定您的服务器是否合规。