2013-11-28 8 views
9

की मैं एक वर्तमान JSF परियोजना जहां web.xml विन्यास शामिल की समीक्षा कर रहा हूँ:विन्यास com.sun.faces.config.ConfigureListener

  • FacesServlet (*.xhtml पर कॉन्फ़िगर)
  • com.sun.faces.config.ConfigureListener

मैं जेएसएफ 2.2 और मोजाररा कार्यान्वयन का उपयोग कर रहा हूं।

मैं ConfigureListener के बारे में उलझन में हूं। क्या इस कक्षा को विन्यास में जरूरी है? इस वर्ग का लक्ष्य क्या है? मुझे कोई जानकारी नहीं मिली और कक्षा में लगभग कोई जवाडोक नहीं है।

यदि मैं इस कॉन्फ़िगरेशन को हटा देता हूं, तो सबकुछ एक ही तरीके से काम करता प्रतीत होता है। इस प्रकार मुझे लगता है कि ConfigureListener हटाया जा सकता है या हटाया जाना चाहिए लेकिन मुझे यकीन नहीं है।

+0

इस के लिए देखें http://www.coderanch.com/t/428264/JSF/java/function-listener-sun-faces-config – Willmore

उत्तर

10

ConfigureListener सामान्य रूप से Mojarra कार्यान्वयन JAR फ़ाइल की फ़ाइल के माध्यम से स्वचालित रूप से पंजीकृत होता है। इसके अतिरिक्त, ConfigureListener एक पुराने ग्लासफ़िश v3 बग (नोट: v3, 3.0.x नहीं, इस प्रकार वास्तव में वह पहला जीएफ 3 संस्करण) को हल करने के लिए सर्वलेट 3.0 ServletContainerInitializer के माध्यम से स्पष्ट रूप से पंजीकृत है।

ऐसी स्थितियां मौजूद हैं जिनमें .tld फ़ाइल के माध्यम से स्वत: पंजीकरण अपर्याप्त है। प्रसिद्ध व्यक्ति तब होता है जब वेबपैप Jetty पर तैनात किया जाता है। यह इस क्यू & ए: could not find Factory: javax.faces.context.FacesContextFactory में विस्तार से समझाया गया है।

इसके अलावा, जैसा कि पहले और उस विस्तृत उत्तर में बताया गया है, ग्लासफ़िश v3 में एक बग है जिसमें टीएलडी फ़ाइल बहुत देर हो चुकी है और इस प्रकार जेएसएफ सही समय पर अपनी आवश्यक प्रारंभिक चीज़ नहीं कर सका। इसके बाद आपको वेबपैप web.xml में ConfigureListener को स्पष्ट रूप से पंजीकृत करने की आवश्यकता होगी।

लेकिन अगर यह आपके लिए काम करता है तो यह web.xml में स्पष्ट रूप से पंजीकृत नहीं है, तो बस इसे बाहर रखें। web.xml में कम शोर बेहतर है। लेकिन यदि आप संभावित रूप से उल्लिखित समस्या के प्रति संवेदनशील कंटेनर पर तैनात होते हैं (इसलिए जब आपका वेबपैप वास्तव में सार्वजनिक रूप से वितरित होता है और आपके पास लक्षित कंटेनर की पसंद पर कोई नियंत्रण नहीं होता है), तो आप इसे बेहतर तरीके से "मामले में रखेंगे उस"।


अद्यतन: ऐसा लगता है कि बिलाव 8.x गाड़ी व्यवहार से पता चलता है जब इस प्रविष्टि web.xml में सक्षम किया गया है: इस श्रोता वास्तव में दो बार केवल एक बार के बजाय निष्पादित किया जाएगा। नतीजा विनाशकारी है: दूसरों के बीच, सभी जेएसएफ कार्यक्रम श्रोताओं को दो बार पंजीकृत किया जाएगा और घटक पुस्तकालयों को दो बार लोड किया जाएगा। यह केवल रनटाइम के दौरान संघर्ष के लिए जाता है। दूसरे शब्दों में, जब टोमकैट पर तैनाती करते हैं, तो सुनिश्चित करें कि यह प्रविष्टि web.xml से हटा दी गई है।

+0

उत्तर के लिए धन्यवाद। मुझे एहसास हुआ कि 'FacesServlet' वास्तव में '/ *। Xhtml' पर कॉन्फ़िगर किया गया है। मैंने सवाल अपडेट किया। – LaurentG

+0

आपका स्वागत है। मैं इसे दोबारा जांच दूंगा। यह अर्थात् अवैध वाक्यविन्यास है। मैंने क्यू को सही के साथ अपडेट किया। – BalusC

+0

आप सही (फिर से) हैं। क्षमा करें मैंने बहुत तेज जांच की है। मेरे पास '* .xhtml' है। – LaurentG

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