Sto utilizzando 2 PU in EJB stateless e ciascuno di essi viene invocato su un metodo:Come impedire che "La transazione locale abbia già un'eccezione 1 Risorsa non XA"?
@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;
}
Tali metodi sono annotati con REQUIRES_NEW transcaction per evitare questa eccezione. Quando chiamavo questo metodo dall'applet javaFX, tutto funzionava come previsto. Ora sto provando a chiamarli dal webservice JAX-RS (non vedo alcuna differenza logica in quanto in entrambi i casi ejb è stato consultato nel contesto iniziale) e continuo a ricevere questa eccezione. Quando ho impostato XADatasource nei pool di connessione 2.1 glassfish, ho ricevuto un'eccezione nullpointer su em2.
Qualche idea su cosa provare dopo?
saluti
Vedere anche http://stackoverflow.com/questions/2413911/if-i-access-usertransaction-does-this-mean-that-i-use-2-phase-commit-or-xa/2425585#2425585 – ewernli