我知道EJB中的事务处理由EJB容器/应用服务器负责。
现在我想更多地理解这一点,例如,考虑一个场景,其中我们有一个分布式事务(超过两个资源作为事务的一部分);我读到有用于所有这些的JTA、JTS。
我的问题是:
1)容器是否实现了事务处理的JTA规范?
2) Container是否提供JTS服务?
如果#1和#2不是真的,那么容器如何提供事务支持?它是否“借用”了其他开源项目的功能来完成这类工作?
有人能帮助理解这一点吗?
附言:我确实参考了网上和书本上的材料,但我仍然不清楚,因此提出了这个问题。
发布于 2017-05-23 16:21:14
答案可以在最新的EJB规范中找到。
1)容器是否实现了事务处理的JTA规范?
21.3.3 JTA 1.1要求
EJB容器必须包括JTA1.1扩展,并且它必须通过javax.ejb.EJBContext接口向具有bean管理的事务分界的企业bean提供javax.transaction.UserTransaction接口,并且还必须在JNDI中以java:comp/UserTransaction的名称(在EJB规范要求的情况下)提供该接口。其他JTA接口是低级事务管理器和资源管理器集成接口,并不打算由企业bean直接使用。
2) Container是否提供JTS服务?
13.1.3与JTA和JTS的关系。
EJB体系结构不要求EJB容器支持JTS接口。EJB体系结构要求EJB容器支持8中定义的JTA和15中定义的连接器APIsdefined。
3)如果#1和#2不是真的,那么容器如何提供事务支持?它是否“借用”了其他开源项目的功能来完成这类工作?
我真的不明白这个问题。通常,Oracle/Sun提供了一组接口或规范,每个供应商(Glassfish、Weblogic、JBoss等)然后将提供它的具体实现。
在过去,应用服务器必须经过Sun认证才能被认为是符合JEE的,我想这与Oracle完全一样。所以,你可以通过开源库的方式提供具体的实现,其他人会决定你的服务器是否兼容。
https://stackoverflow.com/questions/44114741
复制相似问题