Winstone: не удалось найти Factory: javax.faces.context.FacesContextFactory - PullRequest
0 голосов
/ 09 декабря 2011

Я не могу опубликовать приложение JSF2 на сервере Winstone.

Сервер настроен нормально и при удалении

<load-on-startup>1</load-on-startup>

из web.xml, запускается нормально:

enter image description here

Но когда я пытаюсь запустить Indew.xhtml, сервер сообщает:

enter image description here

Часть моего 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>PIA</display-name>
  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>index.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>
    <description>State saving method: 'client' or 'server'.</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>
</web-app>

Обновление : я пробовал winstone 1.0.0.jar, и он сообщает об этом:

enter image description here

Но у меня есть slf4j-api-1.6.4.jar и slf4j-log4j12-1.6.4.jar в моей папке WEB-INF \ lib ... Где должна быть проблема?

1 Ответ

1 голос
/ 09 декабря 2011

Добавьте это к вашему web.xml, чтобы явно зарегистрировать прослушиватель, который должен конфигурировать фабрики JSF.

<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

Другое возможное решение - удалить <load-on-startup> из FacesServlet, но я никогда не использовал Winstone, поэтому не могу гарантировать, будет ли это работать на этом сервере.

Этот обходной путь обычно не обязателен на приличных серверах, но на плохих серверах это так. Для получения дополнительной информации см. Также не удалось найти Factory: javax.faces.context.FacesContextFactory .


Обновление в соответствии с комментариями, после добавления слушателя исключение исчезло, но теперь Error instantiating listener class: com.sun.faces.config.ConfigureListener появляется без какой-либо трассировки стека. Похоже, проглатывание трассировки стека является ошибкой Winstone, которая была исправлена ​​ в 1.0.0 . Попробуйте, теперь она должна показать реальную причину проблемы.


Обновление 2 Согласно обновлению вопроса, реальная причина, кажется, NoClassDefFoundError на org.slf4j.loggerFactory. Это, однако, не используется Мохарра в любом случае. Трассировка стека также указывает, что это происходит перед загрузкой любых слушателей. Другими словами, это, вероятно, другая проблема, выпущенная для Winstone. Очевидно, что самому Winstone нужна эта библиотека. Добавьте его в путь к классам выполнения Winstone вместо /WEB-INF/lib.

...