Actually I'm introducing myself into JSF. For that reason I copied the project from this location: http://www.concretepage.com/spring-4/spring-4-jsf-2-integration-example-using-autowired-annotation Setup:
- OpenSUSE 13.2
- JDK-1.8.0_77
- Gradle 3.0
- Spring 4
- JSF-2
- Apache Tomcat 8.0.33
- Eclipse MARS 2 (4.5.2)
Building this project with "gradle build" and deploy it manually to Tomcat and access an URL works just fine. So this project seems to be OK. So I try the same procedure inside eclipse with a configurated server. But as soon as I access the same URL, I'm getting an IllegalStateException (No WebApplicationContext found: no ContextLoaderListener registered?).
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
org.springframework.web.jsf.FacesContextUtils.getRequiredWebApplicationContext(FacesContextUtils.java:81)
org.springframework.web.jsf.el.SpringBeanFacesELResolver.getWebApplicationContext(SpringBeanFacesELResolver.java:90)
org.springframework.web.jsf.el.SpringBeanFacesELResolver.getBeanFactory(SpringBeanFacesELResolver.java:78)
org.springframework.beans.factory.access.el.SpringBeanELResolver.getValue(SpringBeanELResolver.java:49)
com.sun.faces.el.DemuxCompositeELResolver._getValue(Unknown Source)
com.sun.faces.el.DemuxCompositeELResolver.getValue(Unknown Source)
org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:94)
org.apache.el.parser.AstValue.getValue(AstValue.java:137)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
com.sun.faces.facelets.el.TagValueExpression.getValue(Unknown Source)
javax.faces.component.ComponentStateHelper.eval(Unknown Source)
javax.faces.component.ComponentStateHelper.eval(Unknown Source)
javax.faces.component.UIOutput.getValue(Unknown Source)
javax.faces.component.UIInput.getValue(Unknown Source)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(Unknown Source)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(Unknown Source)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(Unknown Source)
javax.faces.component.UIComponentBase.encodeEnd(Unknown Source)
javax.faces.component.UIComponent.encodeAll(Unknown Source)
javax.faces.render.Renderer.encodeChildren(Unknown Source)
javax.faces.component.UIComponentBase.encodeChildren(Unknown Source)
javax.faces.component.UIComponent.encodeAll(Unknown Source)
javax.faces.component.UIComponent.encodeAll(Unknown Source)
javax.faces.component.UIComponent.encodeAll(Unknown Source)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Unknown Source)
com.sun.faces.application.view.MultiViewHandler.renderView(Unknown Source)
com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
javax.faces.webapp.FacesServlet.service(Unknown Source)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
I think this exception is already seen pretty often. I've tried serveral confirmed solutions, but all of them mess up the simplicity of the project. Also the manual deployment is working, so I don't think there is something wrong with the project itself. (e.g. adding a context-listener,...)
I'm pretty sure, there is something wrong with the configuration of the server or the project inside eclipse.
I compared several settings against the standalone-tomcat:
- Usage of the same JRE
- configuration of project's libs and deployment-assembly
- eclipse launch-configuration by ps -Af
Also neither warnings nor errors are printed into the console-log. I added a breakpoint to WebAppInitializer.onStartup. This breakpoint was not visited.
Do you have other suggestions what to check or even a solution for this?
-- Solution -- Could it be that simple?
Next day I started the enviroment again. I added an index.jsp (I didn't configure the web.xml) started the tomcat inside eclipse. It worked. Afterwards I removed the index.jsp restarted my complete enviroment, redeployed and it is still working.
I think the solution is a simple restart (simple eclipse-caching-problem). I don't get the point, why adding a file should influence the bootstrap.
Thanks in advice
Mike