我在无状态 EJB 中使用了 2 个 PU,它们中的每一个都在一个方法上调用:
@PersistenceContext(unitName="PU")
private EntityManager em;
@PersistenceContext(unitName="PU2")
private EntityManager em2;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW )
public void getCandidates(final Integer eventId) throws ControllerException {
ElectionEvent electionEvent = em.find(ElectionEvent.class, eventId);
...
Person person = getPerson(candidate.getLogin());
...
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW )
private Person getPerson(String login) throws ControllerException {
Person person = em2.find(Person.class, login);
return person;
}
这些方法使用 REQUIRES_NEW 事务注释以避免此异常。当我从 javaFX 小程序调用这些方法时,一切都按预期工作。现在我试图从 JAX-RS webservice 调用它们(我没有看到任何逻辑差异,因为在这两种情况下,ejb 都是在初始上下文中查找的)并且我不断收到这个异常。当我在 glassfish 2.1 连接池中设置 XADatasource 时,我在 em2 上遇到了空指针异常。
任何想法接下来要尝试什么?
问候