PWC1232:嵌套请求调度的最大深度超过:org.apache.catalina.core.ApplicationDispatcher.doInvoke中的20

时间:2015-03-11 16:35:03

标签: jsf glassfish infinite-loop facesservlet

我正在使用带有glassfish 3.1的jsf 2.1(mojara),我的网站.xml看起来像:

  <welcome-file-list>
    <welcome-file>NewFile.xhtml</welcome-file>
  </welcome-file-list>
  <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>*.xhtml</url-pattern>
  </servlet-mapping>
  <context-param>

我收到此错误

  

2015-03-11T21:40:15.054 + 0530 |警告:   ApplicationDispatcher [/ JSFProject] PWC1231:Servlet.service()for   servlet Faces Servlet抛出了异常javax.servlet.ServletException:   PWC1232:嵌套请求调度的最大深度超过:20 at   org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:772)

1 个答案:

答案 0 :(得分:1)

这个问题表明你使用的是JSF 1.x,而不是JSF 2.x. JSF 1.x使用JSP作为默认视图技术,而JSF 2.x使用Facelets作为默认视图技术。并且,JSF 1.x具有已知的错误(“功能”),当它FacesServlet被映射到与物理视图文件相同的后缀URL模式时,它将在无限循环中运行。

事实上,你的/WEB-INF/lib包含以下绝对不属于的JAR。 GlassFish作为一个完整的Java EE容器已经随附了Servlet和JSF API / impl。

  • javax.servlet.jar(Servlet API;已由GlassFish提供!)
  • jsf-api.jar(Mojarra 1.x; GlassFish已供应Mojarra 2.x!)
  • jsf-impl.jar(Mojarra 1.x; GlassFish已供应Mojarra 2.x!)
  • myfaces-api-1.1.5.jar(MyFaces 1.x; GlassFish已供应Mojarra 2.x!)
  • myfaces-impl-1.1.5.jar(MyFaces 1.x; GlassFish已供应Mojarra 2.x!)

摆脱它们。即使这样,你也不应该在一个webapp中混合多个JSF实现。