PWC1232: превышена максимальная глубина для вложенных запросов: 20 в org.apache.catalina.core.ApplicationDispatcher.doInvoke

Я использую jsf 2.1 (мохара) с glassfish 3.1, и мой веб.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() для сервлета Faces Servlet выбросил исключение javax.servlet.ServletException: PWC1232: Превышена максимальная глубина для вложенных запросов: 20 at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:772)

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.

  • 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!)

Избавься от них. Даже в этом случае не следует смешивать несколько реализаций JSF в одном веб-приложении.

Другие вопросы по тегам