2011-12-12 16 views
5

का सबसे अच्छा तरीका एक JSF2 webapp में "अनियंत्रित" अपवाद को संभालने के लिए क्या है?JSF2 अपवाद हैंडलिंग

वर्तमान में, मैं उन्हें सर्वलेट कंटेनर तक प्रवाह, और मैं एक jsp त्रुटि एक दोस्ताना संदेश और अपवाद की जानकारी दिखा पृष्ठ पर (web.xml फ़ाइल के माध्यम से) अनुप्रेषित करते हैं।

बेहतर उन्हें एक "कस्टम अपवाद संचालक" के साथ संभाल करने के लिए है (एड बर्न्स पुस्तक "JSF 2.0 - पूरा संदर्भ" में कहते हैं) की तरह।

दोनों ही मामलों ("web.xml" या "अपवाद संचालक") में: मैं एक jsp पेज के बजाय एक facelet पृष्ठ पर रीडायरेक्ट करने के लिए है? (क्योंकि अपवाद शायद जेएसएफ समस्या के कारण होता है और परिणामस्वरूप लूप हो सकता है)। या मैं एक फेसलेट पेज पर रीडायरेक्ट कर सकता हूं? जेएसपी पेज पर रीडायरेक्ट करने से जेएसएफ ऐप को जेएसपी और फेसलेट दोनों को स्वीकार करने के लिए कॉन्फ़िगर करने का नुकसान होता है (यह केवल चेहरे वाले पृष्ठों वाले "साफ" होगा)।

अंत में, एक और सवाल: "कस्टम अपवाद संचालक" "जाँच" अपवाद भी संभालती है? वर्तमान में, मैं उन्हें प्रबंधित सेम में संभालता हूं (उन्हें पकड़ता हूं और ऐप पेज में चेहरे का दृश्य दिखाता हूं)।

उत्तर

6

जेएसएफ 2 वेबएप में "अनचेक" अपवादों को संभालने का सबसे अच्छा तरीका क्या है?

यह सब कार्यात्मक आवश्यकताओं पर निर्भर करता है। अनचेक अपवाद आमतौर पर आपके वेबैप में बग और कॉन्फ़िगरेशन समस्याओं का संकेत देते हैं। उन्हें आमतौर पर पकड़ा नहीं जाना चाहिए बल्कि कंटेनर में बस बुलबुला होना चाहिए। वे आमतौर पर एंडुसर की गलती नहीं करते हैं बल्कि डेवलपर या सर्वरडमिन की गलती होती हैं।


वर्तमान में, मैं उन्हें सर्वलेट कंटेनर तक प्रवाह, और मैं एक jsp त्रुटि एक दोस्ताना संदेश और अपवाद की जानकारी दिखा पृष्ठ पर (web.xml फ़ाइल के माध्यम से) अनुप्रेषित करते हैं।

क्या उन्हें "कस्टम अपवाद हैंडलर" के साथ संभालना बेहतर है (जैसे एड बर्न्स "जेएसएफ 2.0 - द पूर्ण संदर्भ" पुस्तक में कहते हैं)। यदि आप अतुल्यकालिक पर अपवाद के ऊपर एक अधिक महीन बेहतर नियंत्रण (ajax, XMLHttp) अनुरोध के रूप में वे <error-page> द्वारा web.xml में संभाला नहीं कर रहे हैं करना चाहते हैं

कस्टम अपवाद संचालक विशेष रूप से उपयोगी है। एक कस्टम अपवाद हैंडलर के साथ आप एक विशिष्ट त्रुटि पृष्ठ पर नेविगेट करने में सक्षम होंगे ताकि जावास्क्रिप्ट अलर्ट संवाद में एक गुप्त अपवाद संदेश की बजाय इसे पूर्ण महिमा में प्रदर्शित किया जा सके। लेकिन तुल्यकालिक (सामान्य HTTP) अनुरोध पर अपवाद के लिए, यह web.xml में <error-page> की तुलना में कुछ हद तक overkill है।


दोनों ही मामलों ("web.xml" या "अपवाद संचालक") में: मैं एक jsp पेज के बजाय एक facelet पृष्ठ पर रीडायरेक्ट करने के लिए है? (क्योंकि अपवाद शायद जेएसएफ समस्या के कारण होता है और परिणामस्वरूप लूप हो सकता है)। या मैं एक फेसलेट पेज पर रीडायरेक्ट कर सकता हूं? जेएसपी पेज पर रीडायरेक्ट करने से जेएसएफ ऐप को जेएसपी और फेसलेट दोनों को स्वीकार करने के लिए कॉन्फ़िगर करने का नुकसान होता है (यह केवल चेहरे वाले पृष्ठों वाले "साफ" होगा)।

बस यह सुनिश्चित करें कि अपवाद पृष्ठ बग से मुक्त है। यह इस पर ध्यान दिए बिना कि यह एक जेएसपी या फेसलेट पेज है या नहीं। बग जेएसपी पृष्ठों के अंदर अच्छी तरह से रेंग सकते हैं।


अंत में, एक और सवाल: "कस्टम अपवाद संचालक" संभालती भी "जाँच" अपवाद? वर्तमान में, मैं उन्हें प्रबंधित सेम में संभालता हूं (उन्हें पकड़ता हूं और ऐप पेज में चेहरे का दृश्य दिखाता हूं)।

यह सभी प्रकार के अपवादों को संभालता है।

+0

धन्यवाद बालूसी। सिर्फ एक प्रश्न: फेसलेट त्रुटि पृष्ठ का उपयोग करने के लिए यह एक बुरा अभ्यास नहीं है? (बस एक संदेश और अपवाद जानकारी दिखा रहा है)। यह तब भी काम करता है जब अपवाद जेएसएफ ढांचे के कारण होता है? – choquero70

+0

ठीक है, अगर अपवाद जेएसएफ कार्यान्वयन में कुछ बग के कारण होता है, तो यह न केवल त्रुटि पृष्ठ पर प्रकट होता है, बल्कि अन्य सभी पृष्ठों पर भी प्रकट होता है। – BalusC

+0

आप सही हैं ... लेकिन उस स्थिति में (अन्य जेएसएफ पृष्ठों पर प्रकट), अगर हमारे पास एक जेएसपी त्रुटि पृष्ठ है, तो यह त्रुटि को सही तरीके से दिखाएगा। अन्यथा, अगर हमारे पास फेसलेट त्रुटि पृष्ठ था, तो यह काम नहीं करेगा। तो क्या त्रुटि पृष्ठ जेएसपी होना बेहतर नहीं है? मुझे जवाब नहीं होना चाहिए, ताकि मेरे पास जेएसपी और फेसलेट्स को एप्लिकेशन में मिश्रित न किया जाए :) लेकिन मुझे डर है कि यह हाँ है। आप अपने ऐप्स, जेएसपी या फेसलेट त्रुटि पृष्ठ में क्या उपयोग करते हैं? – choquero70

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