相关疑难解决方法(0)

Java CDI @PersistenceContext和线程安全

在muliple类threadsafe中,EntityManager @Inject [ed]如下所示?

@PersistenceContext(unitName="blah")
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

这个问题和这个问题似乎是针对Spring的.我正在使用Jave EE CDI服务

java cdi java-ee-6

23
推荐指数
3
解决办法
9625
查看次数

@Stateless或@Singleton而不是静态助手类?

我正在维护一些运行良好的旧JEE代码但是正在使用一些静态辅助类,其中实体管理器从调用EJB传递方法,如下所示:

public class StaticHelper {

    public static void helpingOut(EntityManager entityManager, String value) {
        // i.e. insert value
    }
}
Run Code Online (Sandbox Code Playgroud)

由于这似乎不适合JEE并且对单元测试不好,我已经将这些助手转换为@StatelessEJB,如下所示:

@Stateless
public class StatelessHelper {

    @PersistenceContext(unitName="SuperUnit")
    private EntityManager entityManager;

    public void helpingOut(String value) {
        // i.e. insert value
    }
}
Run Code Online (Sandbox Code Playgroud)

就像我可以在使用CDI-Unit的调用EJB中注入一个模拟帮助器.

现在,根据负载,由这是不是在所有的问题我想说的容器中创建无状态帮手1-3实例,但无论如何,我想过一个@Singleton使用两种@ConcurrencyManagement(ConcurrencyManagementType.BEAN)@Lock(LockType.READ)使其多线程-不过这并未"似乎是一个好主意,因为EntityManager它不是线程安全的.或者这里解释的仍然适用?

"...容器序列化对每个有状态和无状态会话bean实例的调用.大多数容器将支持并发执行的会话bean的许多实例;但是,每个实例只能看到序列化的方法调用序列.因此,有状态或无状态会话bean不必编码为可重入..."

multithreading unit-testing ejb java-ee

5
推荐指数
1
解决办法
322
查看次数

标签 统计

cdi ×1

ejb ×1

java ×1

java-ee ×1

java-ee-6 ×1

multithreading ×1

unit-testing ×1