I'm not able to publish JSF2 application on Winstone server.
Server is configured fine and when I remove
<load-on-startup>1</load-on-startup>
from web.xml, it starts normally:
But when I try to start indew.xhtml, server reports:
Part of my 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>
Update: I've tried winstone 1.0.0.jar
and it reports this:
But I have slf4j-api-1.6.4.jar
and slf4j-log4j12-1.6.4.jar
in my WEB-INF\lib folder...
Where should be a problem?
Add this to your
web.xml
to explicitly register the listener which is supposed to configure the JSF factories.Another possible solution is to remove the
<load-on-startup>
from theFacesServlet
, but I have never used Winstone so I can't guarantee if that would work on that server.This workaround is usually not mandatory in decent servers, but in poor servers it is. For more background information, see also could not find Factory: javax.faces.context.FacesContextFactory.
Update as per the comments, after adding the listener the exception disappeared, but now a
Error instantiating listener class: com.sun.faces.config.ConfigureListener
appears without any stacktrace. The swallowing of the stacktrace seems to be a Winstone bug which was fixed in 1.0.0. Give it a try, it should now show the real cause of the problem.Update 2 as per the question update, the real cause seems to be a
NoClassDefFoundError
onorg.slf4j.loggerFactory
. This is however not used by Mojarra in any way. The stacktrace also indicates that this is happening before loading any listeners. In other words, this is likely a different problem, releated to Winstone. Apparently Winstone itself needs that library. Add it to the runtime classpath of Winstone instead of the/WEB-INF/lib
.