бесконечный цикл / StackOverflowError при использовании Apache MyFaces 2.0 - PullRequest
1 голос
/ 23 апреля 2010

Я просто хотел бы попробовать JSF 2.0 (MyFaces 2.0) с использованием Tomcat 6.0. Я совершенно новичок в JSF. Я просто поместил статический xhtml как test.jsf в корень приложения. При запросе URL всегда будет выброшено StackOverflowError:

 java.lang.StackOverflowError
 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:904)
 at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:905)
 at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:905)

(повторяется много раз, но потом:)

 at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:905)
 at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
 at org.apache.myfaces.context.servlet.RequestMap.getAttributeNames(RequestMap.java:66)
 at org.apache.myfaces.util.AbstractAttributeMap.isEmpty(AbstractAttributeMap.java:100)
 at org.apache.myfaces.renderkit.ErrorPageWriter._writeVariables(ErrorPageWriter.java:558)
 at org.apache.myfaces.renderkit.ErrorPageWriter._writeVariables(ErrorPageWriter.java:538)
 at org.apache.myfaces.renderkit.ErrorPageWriter.debugHtml(ErrorPageWriter.java:259)
 at org.apache.myfaces.renderkit.ErrorPageWriter.debugHtml(ErrorPageWriter.java:221)
 at org.apache.myfaces.renderkit.ErrorPageWriter.handleThrowable(ErrorPageWriter.java:384)
 at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:102)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:439)
 at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:115)
 at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:103)
 at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:207)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:439)
 at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:115)
 at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:103)
 at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:207)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)

(также повторяется много раз ...)

Что я сделал не так?

1 Ответ

3 голосов
/ 23 апреля 2010

StackOverflowError во время запроса сервлета HTTP указывает на бесконечную рекурсию в отображениях сервлета / фильтра. Как ваш FacesServlet отображается? Он должен отображаться для прослушивания url-pattern из *.jsf и, следовательно, , а не *.xhtml (что является распространенной ошибкой начинающих). В противном случае он будет называть себя рекурсивно. фактические файлы должны иметь имя *.xhtml. Вы просто называете это как *.jsf в URL. Пожалуйста, обратитесь / обратитесь к JSF 2.0 книги / учебные пособия / документация внимательно о том, как правильно настроить / использовать JSF.

...