我试图了解CDI和EJB以及实体边界控制(ECB)模式。我对ECB模式的理解是边界是事务边界的起点和终点。除此之外,CDI不像EJB那样提供事务支持。
因此,如果我想成功实现ECB模式,那么以下是正确的;
由于
答案 0 :(得分:13)
我成功地在JavaEE 6中实现了ECB模式,使用EJB仅用于Boundaries和CDI用于控制器。我的架构中的典型堆栈使用
构成Boundary的无状态EJB总是使用@TransactionAttribute(REQUIRED)进行注释,这是默认值。我不使用其他事务属性。这样做,您可以确保与Boundary的每次交互都只发生在一次交易中。
通过仅使用CDI托管bean的@Dependent作用域,可以确保每个线程都有自己的bean实例。因此,您永远不会有多个线程同时访问CDI托管bean。这样做可以防止出现典型的并发问题。
使用更重的组合,用于Boundary的集合EJB和用于其余应用程序的轻量级CDI托管bean对我来说非常好。