Faces-config приводит к исключению при запуске веб-приложения

В данный момент я разрабатываю веб-приложение. Я использую JSF 2 на Tomcat 6. Все прошло отлично, но теперь я хочу перемещаться по своим страницам... (Я решил использовать JSF-навигацию без XML). Для этого мне нужно добавить Faces-config.xml. Я сделал это, но после добавления Faces-config я всегда получаю ошибку, когда я хочу открыть свою страницу.

    SCHWERWIEGEND: Servlet.service() for servlet Faces Servlet threw exception
    java.lang.StackOverflowError
        at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
...

Если я удаляю Faces-config, все отлично работает (но тогда у меня нет навигации :( ).

Вот мои зависимости от maven: 2.2

А вот мой face-config.xml

<?xml version="1.0" encoding="utf-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

    <application>
        <navigation-handler>de.xxx.jsf.client.navigation.XXXNavigationHandler</navigation-handler>
    </application>
</faces-config>

А вот мой web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <display-name>JavaServerFaces</display-name>

    <!-- Change to "Production" when you are ready to deploy -->
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.injectionProvider</param-name>
        <param-value>de.xxx.jsf.client.guice.GuiceInjectionProvider</param-value>
    </context-param>

    <!-- Welcome page -->
    <welcome-file-list>
        <welcome-file>faces/hello.xhtml</welcome-file>
    </welcome-file-list>

    <!-- JSF mapping -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map these files with JSF -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

</web-app>

Кто-нибудь из вас знает, почему приложение вылетает?

Спасибо заранее!

TJ


person TerenceJackson    schedule 23.04.2012    source источник
comment
Обратите внимание, что навигационная статья без XML, на которую вы ссылаетесь, предназначена для JSF 1.x (написана в ноябре 2008 г., а JSF 2.x представлена ​​в декабре 2009 г.), а позже уже используется в стандартном API JSF 2.0! Не обращайте внимания на эту статью, удалите пользовательский обработчик навигации и просто используйте новую встроенную функцию JSF 2.0 неявная навигация. Опять же, будьте очень осторожны и не уделяйте слишком много внимания статьям, ориентированным на JSF 1.x. В JSF 2.x многое сделано по-другому и более элегантно.   -  person BalusC    schedule 23.04.2012


Ответы (1)


Ваш заголовок Faces-config.xml по-прежнему указывает на 1.2 DTD. Это может привести к непредсказуемой ошибке. Я бы предложил обновить его до 2.0 DTD и попробовать.

<?xml version='1.0' encoding='UTF-8'?>

<faces-config version="2.0"
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
person kosa    schedule 23.04.2012
comment
Это было быстро! THX это решение. Извините за слепоту ;) - person TerenceJackson; 23.04.2012
comment
Ничего страшного. Узнал на собственном опыте (я потратил один рабочий день, чтобы выяснить, что вызывает проблему). Рад, что мой опыт кому-то помог. - person kosa; 23.04.2012