我有战争和耳朵。 Ear包含@Stateful EJB,对某些数据库操作使用PersistenceContext.EXTENDED。扩展此Context以访问Persistence-bean之外的实体中的Lazy-fetched列表。
WAR有一个JAX-RS REST接口,使用@Stateless Sessionbeans实现,它也可以对其他数据源执行简单操作。它们不需要扩展的上下文,因此它们使用常规的CMT。
然而,WAR中的Bean需要调用EAR的EJB。如果我只是将项目合并到一个EAR中并通过@EJB注入bean,则CMT无法与扩展持久性上下文交互。这是预期的,参见JPA规范7.6.3。 (@Stateless bean将常规PersistenceContext附加到事务,扩展上下文不接受)
所以我拆分了两个服务,现在需要一个服务接口进行交互。
我的问题是:
1)远程EJB调用是否解决了Transaction-Problem,或者JBOSS的行为是否像Bean一样本地并尝试将Extended persistencecontext添加到本地事务中 - 导致同样的问题?