title: Websphere 8.5 - JSF webapp context init error: cleanupInitMaps
body: <p>I have got a JSF 2.1 web application developed with mojarra 2.1.17 distibution which run with any problems on JBoss 6.1 container: now i have to change application server and I have to use websphere AS 8.5 which were born with MyFaces JSF 2 distibution. I'm trying to deploy and start my webapp ignoring MyFaces and using Mojarra, configuring my EAR as IBM official guide shows, configuring shared lib with mojarra dist included, link it to a new classloader created exclusively for my server1 instance of WAS 8.5. It doesn't work at all and when I deploy my webapp i get this stacktrace when WAS try to start the application:</p>
  
  <pre><code>com.ibm.ws.exception.RuntimeWarning: com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load webapp: Failed to load webapp: null
          at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:432)
          at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
          at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1175)
          at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1370)
          at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
          at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968)
          at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:774)
          at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2182)
          at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
          at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
          at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)
          at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116)
          at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994)
          at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:502)
          at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
      Caused by: com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load webapp: Failed to load webapp: null
          at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:759)
          at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
          at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
          ... 14 more
      Caused by: com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load webapp: null
          at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:176)
          at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749)
          ... 16 more
      Caused by: java.lang.NullPointerException
          at com.sun.faces.config.InitFacesContext.cleanupInitMaps(InitFacesContext.java:283)
          at com.sun.faces.config.InitFacesContext.&lt;init&gt;(InitFacesContext.java:107)
          at com.sun.faces.config.FacesInitializer.onStartup(FacesInitializer.java:115)
          at com.ibm.ws.webcontainer.webapp.WebAppImpl.initializeServletContainerInitializers(WebAppImpl.java:613)
          at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:409)
          at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
          at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
          ... 17 more
  </code></pre>
  
  <p>I debugged cleanupInitMaps() method of mojarra dist too and i saw that it tries to get two Map of kind of variable from FacesContext called <strong>threadInitContext</strong> and <strong>initContextServletContext</strong> but gets null:</p>
  
  <pre><code>Field threadMap = FacesContext.class.getDeclaredField("threadInitContext");
  and 
  Field initContextMap = FacesContext.class.getDeclaredField("initContextServletContext");
  </code></pre>
  
  <p>How is this caused and how can I solve it?</p>