Очевидно, что фактический файл представления не имеет расширение .jspx
, но расширение .xhtml
. Следовательно, FacesServlet
будет работать в бесконечном цикле, вызывая себя каждый раз, что в конечном итоге приводит к переполнению стека памяти.
Чтобы это исправить, вам нужно удалить эту запись из web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>
По умолчанию .xhtml
уже.
Я также предлагаю удалить это отображение:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Придерживайтесь использования расширения .xhtml
в URL, например, http://localhost:8080/context/page.xhtml.
Обновление : моя ошибка. WAS 7 не поддерживает JSF 2.0 вообще. Он поддерживает только JSF 1.2. См. Также документацию WAS . Вам нужны файлы JSP вместо файлов Facelets (XHTML). Вы также не можете использовать преимущества JSF 2.0.
Чтобы заставить JSF 2.0 работать в WAS 7, вам нужно связать его самостоятельно в /WEB-INF/lib
веб-приложения и настроить политики загрузчика классов WAS. Смотрите также эту ссылку
Несмотря на то, что Websphere 7 формально не поддерживает JSF 2.0, вы можете заставить его работать в ухудшенном режиме. Следуйте приведенным ниже инструкциям, чтобы заставить его работать на вашей версии Websphere 7.
- Обновить до версии не ниже 7.0.0.13
- Отправьте файлы JAR Mojarra в каталог WEB-INF / lib
- Установите для загрузчика классов WAR значение PARENT_LAST
- Установите для загрузчика классов EAR значение PARENT_LAST и APPLICATION
Обратите внимание, что ухудшенный режим означает, что вы НЕ сможете использовать @Resource или любые аннотации JPA. Если вы считаете, что вам нужна поддержка, обратитесь к представителю IBM.
Обратите внимание, что он будет обрабатывать @PostConstruct и @ PreDestroy.