2011-01-25 15 views
8

हमारे पास एक ऐसा एप्लिकेशन है जो जेएसएफ 2 और स्प्रिंग का उपयोग करता है। तैनात किए जाने पर एप्लिकेशन ठीक काम करता है। लेकिन ऐसा होता है अगर मैं निम्नलिखित चरणों से गुजरता हूं:java.lang.IllegalArgumentException: शून्य स्रोत

  1. एप्लिकेशन का लॉगिन पृष्ठ खोलें।
  2. सर्वर पर एप्लिकेशन को फिर से तैनात किया गया।
  3. पहले खोली प्रवेश पृष्ठ का उपयोग कर लॉगिन करने की कोशिश की, और यह निम्न अपवाद पता चलता है:

    javax.servlet.ServletException: null source 
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:321) 
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    
    root cause 
    
    java.lang.IllegalArgumentException: null source 
        at java.util.EventObject.<init>(EventObject.java:38) 
        at javax.faces.event.SystemEvent.<init>(SystemEvent.java:67) 
        at javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:69) 
        at javax.faces.event.PostRestoreStateEvent.<init>(PostRestoreStateEvent.java:69) 
        at com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:256) 
        at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:245) 
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) 
        at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107) 
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) 
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) 
    

अगर मैं पहले प्रवेश पृष्ठ पर क्लिक करें और फिर लॉगिन दर्ज आवेदन नहीं तोड़ता है विवरण । यह केवल तब होता है जब मैं पहले से लोड किए गए लॉगिन पृष्ठ को नए तैनात एप्लिकेशन के साथ उपयोग करने का प्रयास करता हूं।

कोई भी जवाब जानता है?

उत्तर

13

यह एक ViewExpiredException के रूप में फेंक दिया जाना चाहिए था। यह एक बग है जो मोजररा 2.0.3 में प्रकट होना शुरू कर दिया गया है और इसे मोजाररा 2.1.0 में तय किया गया है। issue 1762 देखें (ध्यान दें कि मोज़रा 2.1.0 doesn't टॉमकैट/जेट्टी पर काम करते हैं, तो कम से कम मोज़रा 2.1.1 का उपयोग करें)।

असल में, जब मोज़रारा दृश्य बनाने या पुनर्स्थापित करने में विफल रहता है, तो यह आमतौर पर एक विशिष्ट पर्याप्त अपवाद फेंकता है, लेकिन इस बग के कारण, कोड में बाद में वैध दृश्य की गलत गणना की गई जिसके परिणामस्वरूप IllegalArgumentException: null source में परिणाम हुआ। संभव वास्तविक कारण यह था कि दृश्य में एक साधारण एक्सएमएल सिंटैक्स त्रुटि होती है, जैसे लापता टैग या टूटा हुआ विशेषता मान, जिसके लिए मोजररा आमतौर पर FaceletException को लाइन नंबर और स्थिति के साथ एक बहुत विस्तृत संदेश के साथ फेंक देगा ।

ViewExpiredException को रोकने के लिए, आपको पृष्ठ पर किसी भी क्रिया करने से पहले जीईटी अनुरोध द्वारा रीफ्रेश करना होगा। यदि आप एक मोजाररा संस्करण का उपयोग कर रहे हैं जहां यह बग प्रकट नहीं होता है (उदाहरण के लिए 2.0.2 या पुराना, या 2.1.0 या नया), तो आप इसे विशेष रूप से web.xml में विशेष अपवाद पर संभाल सकते हैं और एक कस्टम त्रुटि प्रदान कर सकते हैं पृष्ठ जिसमें एंडुसर को सूचित किया जाता है कि प्रारंभिक अनुरोध यूआरआई के लिंक के साथ सत्र समाप्त हो गया है।

+0

मुझे अभी भी एक ही समस्या है, मैं अपने मोज़रा संस्करण को अपडेट करूँगा और देख सकता हूं कि मुझे इसी तरह की समस्या है या नहीं। – Rachel

+0

मुझे अपने वेब में उल्लिखित त्रुटि पृष्ठ मिल रहा है।एक्सएमएल लेकिन मैं इस मुद्दे को उत्पन्न करने के बारे में जानना चाहता हूं और इसके लिए उचित समाधान क्या हो सकता है। – Rachel

+0

@ राहेल: यदि आप पहले पैराग्राफ में उल्लिखित 'अवैध अवैधकरण अपवाद: शून्य स्रोत' के बारे में पूछ रहे हैं, तो यह मोजाररा में एक बग है। कम से कम 2.1.0 तक अपग्रेड करें। दूसरा पैराग्राफ बताता है कि बग क्या है और इस बग के साथ मोजाररा का उपयोग करते समय 'अवैध अवैध' अपवाद: शून्य स्रोत 'का एक और संभावित कारण है। तीसरा पैराग्राफ बताता है कि ओपी के विशेष मामले में * वास्तविक * अपवाद से निपटने के लिए, जो 'ViewExpiredException' है। यदि आप 'ViewExpiredException' के बारे में अधिक जानकारी चाहते हैं, तो http://stackoverflow.com/tags/viewexpiredexception/info – BalusC

4

जब तक javax.faces.PARTIAL_STATE_SAVINGझूठी पर सेट किया जाता में तय आपको लगता है कि प्राप्त करेंगे जावा .lang.IleglegalArgumentException। आप javax.faces.PARTIAL_STATE_SAVINGसच करने के लिए सेट है (और आप जानते हैं कि आप क्या कर रहे) आप "अच्छे पुराने" javax.faces.application.ViewExpiredException वापस मिल जाएगा।

-1

मेरे मामले में यह पता चला कि मुझे jstl कॉल में से किसी एक के लिए xhtml फ़ाइल में एंड टैग गुम हो गया था। मैं चुनिंदा टैग का उपयोग कर रहा था और जब किसी के बीच में टैग का चयन अंत टैग नहीं था

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