0

我将 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 Faces Servlet 的 Servlet.service() 抛出异常 javax.servlet.ServletException:PWC1232:超过嵌套请求调度的最大深度:20 org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:772)

4

1 回答 1

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 实现。

于 2015-03-11T17:38:36.383 回答