मैं राज्यविहीन EJB में 2 पीयू उपयोग कर रहा हूँ और उनमें से हर एक पद्धति पर शुरू हो जाती है:"स्थानीय लेनदेन में पहले से ही 1 गैर-एक्सए संसाधन" अपवाद को रोकने के लिए कैसे करें?
@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 transcaction से एनोटेट। जब मैं javaFX एप्लेट से इन पद्धतियों को बुला रहा था, तो सभी उम्मीद के अनुसार काम करते थे। अब मैं उन्हें जेएक्स-आरएस webservice से कॉल करने की कोशिश कर रहा हूं (मुझे कोई तार्किक अंतर नहीं दिख रहा है क्योंकि दोनों मामलों में ईजेबी प्रारंभिक संदर्भ में देखा गया था) और मुझे यह अपवाद मिल रहा है। जब मैंने ग्लासफ़िश 2.1 कनेक्शन पूल में XADatasource सेट किया, तो मुझे em2 पर nullpointer अपवाद मिला।
कोई विचार क्या अगला प्रयास करना है?
सादर
यह भी देखें http://stackoverflow.com/questions/2413911/if-i-access-usertransaction-does-this-mean-that-i-use-2-phase-commit-or-xa/2425585#2425585 – ewernli