2016-04-22 9 views
5

मेरे पास कुछ ईजेबी हैं जिन्हें जैक्स-आरएस वेब सेवा से बुलाया जाता है। हालांकि, हर बार जब मैं ईजेबी विधियों में से एक को कॉल करता हूं तो मैं एक इंटरसेप्टर का उपयोग करके आमंत्रण को रोक रहा हूं। यह इंटरसेप्टर एक एपीआई कुंजी के लिए पैरामीटर की जांच करता है और यदि यह मौजूद नहीं है या मेरे डेटाबेस में मौजूद नहीं है तो यह एक अपवाद फेंक देगा कि मैं अपने जैक्स-आरएस कोड में पकड़ना चाहता हूं। हालांकि, चूंकि मेरे जैक्स-आरएस वर्ग को इस अपवाद को फेंकने की संभावना का कोई ज्ञान नहीं है, भले ही अपवाद एक अपवाद हो सकता है, यहां सबसे अच्छा अभ्यास क्या होगा?इसे कभी भी फेंकने के बिना अपवाद फेंकने की घोषणा

  1. मेरी अपवाद एक अनियंत्रित अपवाद बनाने और वैसे भी इसके लिए जाँच (कभी उन्हें खुद फेंकने के बिना) मेरी EJB अपवाद फेंकने के लिए की घोषणा?
  2. कुछ और?

उत्तर

1

मुझे पता चला कि एक अनचेक अपवाद फेंकना सबसे अच्छा होगा। मैं अपवाद को पकड़ने और इसे संभालने के लिए अपवाद मैपर का उपयोग करता हूं।

https://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/ExceptionMapper.html

केवल एक चीज अब सिर्फ़ लॉग फाइल करने के लिए अपवाद उत्पादन को दबाने के लिए है।

+1

नोट, यदि आप ईजेबी के साथ एक अनचेक अपवाद फेंकते हैं, तो आपको '@ एप्लिकेशन अपवाद' का उपयोग करने की आवश्यकता है या फिर ईजेबी कंटेनर अपवाद को रोलबैक करेगा और इसे ईजेबीएक्सप्शन में अनुवाद करेगा। –

0

इंटरसेप्टर कुछ RuntimeException (उदाहरण के लिए InvalidParametersException) फेंक सकता है। और आप विशेष सर्वलेट बना सकते हैं जो सभी InvalidParametersException अपवाद को संभालेगा। इस उद्देश्य के लिए आपको web.xml में विशेष mapping बनाना चाहिए।

+0

अपवादों को संभालने के लिए एक विशेष सर्वलेट की तुलना में अन्य विकल्प हैं? शायद मैं नौकरी के लिए एक इंटरसेप्टर डाल सकता हूँ? – Terabyte

संबंधित मुद्दे