相关疑难解决方法(0)

如何防止"本地事务已经有1个非XA资源"异常?

我在无状态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;
}
Run Code Online (Sandbox Code Playgroud)

这些方法使用REQUIRES_NEW transcaction注释以避免此异常.当我从javaFX applet调用这些方法时,所有方法都按预期工作.现在我试图从JAX-RS webservice调用它们(我没有看到任何逻辑上的区别,因为在初始上下文中查找了ejb两种情况)并且我一直得到这个异常.当我在glassfish 2.1连接池中设置XADatasource时,我在em2上得到了nullpointer异常.

任何想法接下来要尝试什么?

问候

java persistence ejb transactions jax-rs

8
推荐指数
2
解决办法
7602
查看次数

标签 统计

ejb ×1

java ×1

jax-rs ×1

persistence ×1

transactions ×1