Tag: jta

JEE7:EJB和CDI bean是否支持容器管理的事务?

Java EE7由一堆“bean”定义组成: Managed Beans 1.0(JSR-316 / JSR-250) Java 1.0的dependency injection(JSR-330) CDI 1.1(JSR-346) JSF Managed Beans 2.2(JSR-344) EJB 3.2(JSR-345) 为了摆脱我心中的混乱,我研究了几篇“何时使用哪种豆类”的文章。 EJB的一个优点似乎是它们单独支持声明式容器管理事务 (着名的事务注释)。 不过,我不确定这是否正确。 任何人都可以批准这个吗? 同时,我想出了一个简单的演示应用程序来检查这是否真的如此。 我刚刚根据这个片段定义了一个CDI bean( 不是 EJB – 它没有类级别注释),如下所示: public class CdiBean { @Resource TransactionSynchronizationRegistry tsr; @Transactional(Transactional.TxType.REQUIRED) public boolean isTransactional() { return tsr.getTransactionStatus() == Status.STATUS_ACTIVE; } } 现在,GlassFish 4.0的结果是这个方法实际上返回true,根据我的询问,它没有按预期工作 。 我确实希望容器忽略CDI bean方法上的@Transactional注释,或甚至抛出exception。 我使用新安装的GlassFish 4服务器,因此没有干扰。 […]