2008-09-17 14 views
6

ठीक है, मैंने इस साइट में शामिल होने के बाद से अपने पहले स्टैक ओवरफ्लो एरर में भाग लिया है, मुझे लगा कि यह एक पोस्ट होना चाहिए :-)। मेरा पर्यावरण सीम 2.0.1 है। जीजी, जेबॉस 4.2.2.जीए और मैं जेएसएफ का उपयोग कर रहा हूं। मैं अपने मौजूदा साइट पर इस्तेमाल किए गए कुछ मौजूदा जेएसपी टैग का लाभ उठाने के लिए जेएसपी को एक फेसलेट व्यू से कनवर्ट करने की प्रक्रिया में हूं। मैंने चेहरे-config.xml और web.xml कॉन्फ़िगरेशन फ़ाइलों को बदल दिया और jsp पेज प्रस्तुत करने का प्रयास करते समय निम्न त्रुटि प्राप्त करना शुरू कर दिया। किसी के पास कोई विचार है?फेस सर्विसलेट ने अपवाद java.lang.StackOverflowError

2008-09-17 09: 45: 17,537 डीबग [org.jboss.seam.contexts.FacesLifecycle] JSF अनुरोध शुरू के लिए /form_home.jsp 2008/09/17 09: 45: 17,587 त्रुटि [org.apache.catalina.core.ContainerBase। [Jboss.web]। [Localhost]। [/]। [चेहरे सर्वलेट]] Servlet.service() सर्वलेट फेस सर्विसलेट ने अपवाद फेंक दिया java.lang.StackOverflowError org.apache.catalina.core.ApplicationHttpRequest.getAttribute (ApplicationHttpRequest.java1010) org.apache.catalina.core.ApplicationHttpRequest.getAttribute (ApplicationHttpRequest.java2222)पर org.apache.catalina.core.ApplicationHttpRequest.getAttribute (ApplicationHttpRequest.java:222) org.apache.catalina.core.ApplicationHttpRequest.getAttribute (ApplicationHttpRequest.java:222) पर पर 91,363,210 ...

<?xml version="1.0" encoding="UTF-8"?> 
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xi="http://www.w3.org/2001/XInclude" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> 

</faces-config> 

और मेरे web.xml फ़ाइल:

<?xml version="1.0"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<!-- Ajax4jsf --> 
<context-param> 
    <param-name>org.richfaces.SKIN</param-name> 
    <param-value>blueSky</param-value> 
</context-param> 
    <!-- Seam --> 
<listener> 
    <listener-class>org.jboss.seam.servlet.SeamListener</listener-class> 
</listener> 


<filter> 
    <filter-name>Seam Filter</filter-name> 
    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>Seam Filter</filter-name> 
    <url-pattern>*.jsp</url-pattern> 
</filter-mapping> 

<servlet> 
    <servlet-name>Seam Resource Servlet</servlet-name> 
    <servlet-class>org.jboss.seam.servlet.SeamResourceServlet 
    </servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Seam Resource Servlet</servlet-name> 
    <url-pattern>/seam/resource/*</url-pattern> 
</servlet-mapping> 
<!-- Seam end --> 

<!-- JSF --> 
<context-param> 
     <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
     <param-value>.jsp</param-value> 
</context-param> 

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 
+0

आप उद्घाटन कथन को स्पष्ट बनाना चाहते हैं। पहली छाप यह साइट के साथ एक ढेर ओवरफ्लो त्रुटि है। ;) हर कोई जावा जानता है। –

+0

मेरे पास एक सहयोगी है जो एक ही त्रुटि प्राप्त कर रहा है (कोड जो मेरे लिए काम करता है), लेकिन जहां पैटर्न सही होना चाहिए (.xhtml बनाम * .seam) - इस स्थिति में सीम फ़िल्टर मैपिंग महत्वपूर्ण है? – larsivi

+0

आपके पास इस लिंक में जवाब हो सकता है http://stackoverflow.com/questions/11114723/using-facelets-instead-of-jsp-results-in-java-lang-stackoverflowerror-at-javax-s –

उत्तर

9

मैं समझने में सक्षम था यह समस्या। स्पष्ट रूप से आप Web.xml को Javax.faces.DEFAULT_SUFFIX के लिए .jsp का समान param-value रखने के लिए Faces Servlet url-pattern (* .jsp) के रूप में कॉन्फ़िगर नहीं कर सकते हैं। यदि आप अपना यूआरएल-पैटर्न .jspx या/whateverdirnameyouwant/ पर बदलते हैं तो एप्लिकेशन कोई स्टैक ओवरफ़्लो त्रुटियों के साथ शुरू होता है। (नोट: कुंजी यह है कि DEFAULT_SUFFIX और फेस सर्विसलेट यूआरएल-पैटर्न समान नहीं हो सकता है कि वे क्या हैं।) उम्मीद है कि यह किसी और की मदद करता है जो इस विशिष्ट समस्या का अनुभव करता है।

2

ढेर जावा में overflows मेरे चेहरे-config.xml फ़ाइल अब कोई FaceletsViewHandler साथ रिक्त है लगभग हमेशा अनंत रिकर्सन/विधि कॉल के कारण होते हैं। आपके मामले में स्टैक ट्रेस दिया गया है, ऐसा लगता है कि 'getAttribute()' को दुर्घटनाग्रस्त होने तक बार-बार कहा जा रहा है। जबकि मैं आपके द्वारा उपयोग किए जाने वाले विशेष वातावरण से घनिष्ठ परिचित नहीं हूं, मैं इस प्रकार के किसी भी व्यवहार के लिए अपने .jsp कोड की जांच करने का सुझाव दूंगा (उदाहरण के लिए दो विधियां जो एक-दूसरे को कॉल करती हैं)

+0

वास्तव में यह है वेब अनुप्रयोग विन्यास त्रुटि। – MGorgon

0

तो, मुझे एक ही त्रुटि थी। मेरे लिए, यह था कि मेरे पास एक जेएसएफ प्रोजेक्ट था और मैं फ़ाइल एक्सटेंशन के साथ गड़बड़ कर रहा था। शुरू करने के लिए, मेरे पास एक्सटेंशन के साथ मेरी सभी वेब फ़ाइलें थीं .jsp। यह काम कर रहा था, लेकिन फिर मैं चाहता था कि वे सभी .jsf बनें, उसके बाद मैं सभी .xhtml का उपयोग कर चला गया। प्रक्रिया में, मेरी web.xml फ़ाइल xhtml और jsf को समायोजित करने के लिए बदल गई। Web.xml फ़ाइल को बदलना ठीक था। मुझे StackOverflowError क्या मिला था कि मेरे पास index.xhtml था जो ui.include टैग के साथ header.jsf को इंगित करता है। तो मेरे पास एक जेएसएफ फ़ाइल की ओर इशारा करते हुए एक एक्सएचटीएमएल फाइल थी। मैंने सोचा था कि web.xml इसे संभालने में सक्षम होगा, लेकिन ऐसा नहीं हुआ, मुझे StackOverflowError मिला। तो, इसे ठीक करने के लिए, अब मेरी सभी जेएसएफ फाइलों में एक्सटेंशन .xhtml है, और नेस्टेड ui: टैग्स को .xhtml फ़ाइलों में इंगित करें।

फ्लिप पक्ष पर, हालांकि, ब्राउज़र यूआरएल index.jsp, index.jsf, index.xhtml को ठीक से संभाल सकता है। तो web.xml (जेएसपी, जेएसएफ और एक्सएचटीएमएल के लिए सर्वलेट मैपिंग के साथ) ब्राउज़र यूआरएल को ठीक से संभालता है, लेकिन मेरी समस्या को हाइलाइट किए जाने के लिए नहीं।