मेरे पास कंटेनर प्रबंधित लेनदेन का उपयोग करते हुए @WebService
इंटरफेस के साथ @Stateless
ईजेबी है, जिसका मतलब है कि एक सिस्टम को अपवाद नहीं फेंकने के बाद लेनदेन स्वचालित रूप से कंटेनर द्वारा किया जाता है।मैं कंटेनर प्रबंधित लेनदेन प्रतिबद्धता से अपवाद कैसे प्राप्त करूं?
यदि मैं EntityManager.persist(...)
पर दो ऑब्जेक्ट्स को एक कॉलम के लिए एक समान मूल्य वाले कॉलम के लिए प्रयास करता हूं, तो कंटेनर मेरे कोड के बाहर प्रतिबद्ध होने पर क्लाइंट को PersistenceException
फेंक देगा। मैं इस अपवाद को कैसे पकड़ूं ताकि मैं अपना स्वयं का एप्लिकेशन अपवाद दोबारा कर सकूं?
क्या मुझे प्रतिबद्धता पर अपवादों को पकड़ने के लिए अपने तरीकों से मैन्युअल रूप से लेनदेन करना है? (और EntityManager.flush()
ऐसा करने का सही तरीका है?) यदि हां, तो कंटेनर प्रबंधित लेन-देन करने का क्या मतलब है?
उत्तर देने के लिए धन्यवाद। मैंने 'EntityManager.flush()' को '@roundInvoke' इंटरसेप्टर में करके हल किया। –
यह कभी-कभी काम कर सकता है, लेकिन अलगाव स्तर से सावधान रहें। जब तक आप सबकुछ क्रमबद्ध नहीं करते हैं, तब भी टीएक्स काम करते समय असफलताओं को प्राप्त करना संभव है। –