【问题标题】:PWC1232: Exceeded maximum depth for nested request dispatches: 20 at org.apache.catalina.core.ApplicationDispatcher.doInvokePWC1232:超过嵌套请求调度的最大深度:20 在 org.apache.catalina.core.ApplicationDispatcher.doInvoke
【发布时间】:2015-05-13 13:50:26
【问题描述】:

我将 jsf 2.1 (mojara) 与 glassfish 3.1 一起使用,我的 web .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)

【问题讨论】:

  • 这个特定错误与问题上的 [jsp] 标记相结合表明您实际上使用的是 JSP 而不是 Facelets (XHTML)。这是真的?如果不是,那为什么要在问题上加上 [jsp] 标签呢?
  • @BalusC : 不,我没有在任何地方使用 jsp ...但是这个错误令人沮丧 ....:(
  • 那么不要使用 [jsp] 标签。 webapp 的/WEB-INF/lib 中是否有任何 JAR?如果有,是哪个?
  • 这些是存在的罐子:commons-codec-1.9.jar commons-el-1.0.jar commons-fileupload-1.2.2.jar commons-io-2.2.jar commons-logging- 1.1.3.jar javax.servlet.jar jsf-api.jar jsf-impl.jar junit-4.12.jar log4j-1.2.17.jar myfaces-api-1.1.5.jar myfaces-impl-1.1.5.jar poi-3.12-beta1-20150228.jar poi-examples-3.12-beta1-20150228.jar poi-excelant-3.12-beta1-20150228.jar poi-ooxml-3.12-beta1-20150228.jar poi-ooxml-schemas-3.12- beta1-20150228.jar poi-scratchpad-3.12-beta1-20150228.jar xmlbeans-2.6.0.jar
  • 您在哪里阅读/了解到您应该添加这些 JAR?

标签: jsf glassfish infinite-loop facesservlet


【解决方案1】:

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

确实,您的/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!)

摆脱它们。即便如此,您也不应该在一个 Web 应用中混合多个 JSF 实现。

【讨论】:

  • 清理、重建、重新部署、重新启动。并且,确保您的 faces-config.xml 根声明至少符合 JSF 2.0。
  • 知道了.. tomahawk20-1.1.10 jar 不匹配...现在可以正常工作了!!非常感谢@BalusC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2018-09-24
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多