【发布时间】:2010-07-15 14:12:31
【问题描述】:
Seam 建议在 Stateful 会话 Bean 中使用 Extended 持久性上下文,以便拥有 Seam 管理的持久性。
我不清楚上述建议是否会对我们希望拥有 Seam 管理的事务的方式产生任何影响。这是因为我们的架构不同。我们在 Stateless EJB 中有以下持久性上下文:
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class CrudServiceBean implements CrudService {
@PersistenceContext(type = PersistenceContextType.TRANSACTION)
private EntityManager em;
...
}
我们的 DAO 调用上述 CrudServiceBean 是无状态 EJB(其中一些也是 Seam 组件),带有 @TransactionAttribute(TransactionAttributeType.REQUIRED)。因此,我们的事务由容器(WebLogic)处理,而不是Seam。
但是,我们现在需要满足以下场景:我们需要有一个前端 Seam 组件(非 EJB)调用多个 DAO (EJB) 方法并将它们全部包装在一个单笔交易。如果我理解正确,我们需要有 Seam 管理的事务。
我们可以像我描述的场景那样拥有 Seam 管理的事务,而没有 Seam 管理的持久性上下文吗?还是两者无关?
【问题讨论】:
标签: java transactions weblogic seam bean-managed-transactions