以下模式是否存在任何线程安全问题或其他代码异味?
使用容器管理的 EntityManager 注入的无状态 EJB3 bean:
@Stateless
public class ServiceA implements IServiceA.ILocal {
@PersistenceContext(unitName="foo")
private EntityManager em
...
.. 然后用上面的服务 bean 注入 View-scoped JSF-managed backing bean:
@ManagedBean
@ViewScoped
public class PageFooController {
@EJB
private IServiceA.ILocal serviceA;
....
部署环境是具有默认 Hibernate JPA 实现的 JBoss 7。
我要问的原因是,在模拟数百个用户的压力测试中,我们注意到损坏的 JPA 实体值(数据库中不存在的值),这可能表明处理 JPA 实体的实体管理器存在一些竞争条件/线程不安全访问。