title: JSF 2.3 WebApp with Tomcat 9
body: <p>I want to develop a JSF web application.</p>
  
  <p>I use JSF 2.3 (.xhtml), Tomcat 9.0.33 and Open JDK 11.0.2 (on Windows 10)</p>
  
  <p>Apache Netbean 11.3 is my IDE. (this now support jsf 2.3)</p>
  
  <p>I started setting up my environment by following these posts : <a href="https://stackoverflow.com/questions/60487389/jsf-webapp-with-tomcat-which-version">JSF WebApp with Tomcat (which version?)</a> for JSF/Tomcat, and this : <a href="https://balusc.omnifaces.org/2013/10/how-to-install-cdi-in-tomcat.html" rel="nofollow noreferrer">Install Weld in Tomcat</a> to setup CDI (Tomcat does not natively support CDI)</p>
  
  <p>this is my web.xml </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
      &lt;web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0"&gt;
        &lt;context-param&gt;
          &lt;param-name&gt;javax.faces.PROJECT_STAGE&lt;/param-name&gt;
          &lt;param-value&gt;Development&lt;/param-value&gt;
        &lt;/context-param&gt;
        &lt;servlet&gt;
          &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
          &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
          &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
        &lt;/servlet&gt;
        &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/faces/*&lt;/url-pattern&gt;
          &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
          &lt;url-pattern&gt;*.xhtml&lt;/url-pattern&gt;
        &lt;/servlet-mapping&gt;
        &lt;session-config&gt;
          &lt;session-timeout&gt;
            30
          &lt;/session-timeout&gt;
        &lt;/session-config&gt;
        &lt;welcome-file-list&gt;
          &lt;welcome-file&gt;faces/index.xhtml&lt;/welcome-file&gt;
        &lt;/welcome-file-list&gt;
      &lt;/web-app&gt;
  </code></pre>
  
  <p>and my faces-config.xml :</p>
  
  <pre><code>    &lt;faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
              http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"
          version="2.3"&gt;
  
      &lt;/faces-config&gt;
  </code></pre>
  
  <p>The webapp built without problems, but when I run it, I get this:</p>
  
  <pre><code>        Using CATALINA_BASE:   "C:\apache-tomcat-9.0.33"
      Using CATALINA_HOME:   "C:\apache-tomcat-9.0.33"
      Using CATALINA_TMPDIR: "C:\apache-tomcat-9.0.33\temp"
      Using JRE_HOME:        "C:\Program Files\Java\openjdk-11.0.2"
      Using CLASSPATH:       "C:\apache-tomcat-9.0.33\bin\bootstrap.jar;C:\apache-tomcat-9.0.33\bin\tomcat-juli.jar"
      17-Mar-2020 16:11:03.226 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.33
      17-Mar-2020 16:11:03.234 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Mar 11 2020 09:31:38 UTC
      17-Mar-2020 16:11:03.234 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.33.0
      17-Mar-2020 16:11:03.234 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
      17-Mar-2020 16:11:03.234 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
      17-Mar-2020 16:11:03.235 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
      17-Mar-2020 16:11:03.235 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\openjdk-11.0.2
      17-Mar-2020 16:11:03.235 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.2+9
      17-Mar-2020 16:11:03.235 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
      17-Mar-2020 16:11:03.236 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-9.0.33
      17-Mar-2020 16:11:03.236 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-9.0.33
      17-Mar-2020 16:11:03.262 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
      17-Mar-2020 16:11:03.262 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
      17-Mar-2020 16:11:03.262 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
      17-Mar-2020 16:11:03.263 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\apache-tomcat-9.0.33\conf\logging.properties
      17-Mar-2020 16:11:03.263 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
      17-Mar-2020 16:11:03.264 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.nonProxyHosts=localhost|127.0.0.1|VEGAOFFICE
      17-Mar-2020 16:11:03.264 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
      17-Mar-2020 16:11:03.264 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
      17-Mar-2020 16:11:03.264 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
      17-Mar-2020 16:11:03.264 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\apache-tomcat-9.0.33
      17-Mar-2020 16:11:03.265 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\apache-tomcat-9.0.33
      17-Mar-2020 16:11:03.265 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\apache-tomcat-9.0.33\temp
      17-Mar-2020 16:11:03.265 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\openjdk-11.0.2\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files\OpenVPN\bin;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Java\jdk1.8.0_66\bin;C:\apache-cxf-3.2.2\bin;C:\axis-1_4\bin;C:\Program Files\IEDriverServer_x64_2_53_1\;C:\Program Files\phantomjs-1.9.8-windows\;C:\Program Files\chromedriver_win32\;C:\Program Files\Git\cmd;C:\Program Files\MySQL\MySQL Server 5.7\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Users\rbott\AppData\Local\Microsoft\WindowsApps;C:\Users\rbott\AppData\Roaming\com.wildix\wildixzd-web\2.0.11\;C:\Users\rbott\AppData\Roaming\npm;.]
      17-Mar-2020 16:11:04.047 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
      17-Mar-2020 16:11:05.021 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [2,235] milliseconds
      17-Mar-2020 16:11:05.206 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
      17-Mar-2020 16:11:05.207 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.33]
      17-Mar-2020 16:11:05.236 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9.0.33\webapps\docs]
      17-Mar-2020 16:11:06.886 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [818] milliseconds.
      17-Mar-2020 16:11:06.943 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9.0.33\webapps\docs] has finished in [1,707] ms
      17-Mar-2020 16:11:06.947 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9.0.33\webapps\examples]
      17-Mar-2020 16:11:08.183 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9.0.33\webapps\examples] has finished in [1,237] ms
      17-Mar-2020 16:11:08.185 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9.0.33\webapps\host-manager]
      17-Mar-2020 16:11:08.291 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9.0.33\webapps\host-manager] has finished in [106] ms
      17-Mar-2020 16:11:08.292 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9.0.33\webapps\manager]
      17-Mar-2020 16:11:08.397 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9.0.33\webapps\manager] has finished in [104] ms
      17-Mar-2020 16:11:08.400 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\apache-tomcat-9.0.33\webapps\ROOT]
      17-Mar-2020 16:11:08.494 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\apache-tomcat-9.0.33\webapps\ROOT] has finished in [94] ms
      17-Mar-2020 16:11:08.501 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
      17-Mar-2020 16:11:08.526 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [3,503] milliseconds
      17-Mar-2020 16:11:08.923 INFO [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment descriptor [C:\apache-tomcat-9.0.33\conf\Catalina\localhost\JSF23WebApp.xml]
      17-Mar-2020 16:11:08.928 WARNING [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor The path attribute with value [/JSF23WebApp] in deployment descriptor [C:\apache-tomcat-9.0.33\conf\Catalina\localhost\JSF23WebApp.xml] has been ignored
      17-Mar-2020 16:11:11.984 INFO [http-nio-8080-exec-6] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
      17-Mar-2020 16:11:12.209 INFO [http-nio-8080-exec-6] org.jboss.weld.environment.servlet.EnhancedListener.onStartup WELD-ENV-001008: Initialize Weld using ServletContainerInitializer
      17-Mar-2020 16:11:12.340 INFO [http-nio-8080-exec-6] org.jboss.weld.bootstrap.WeldStartup.&lt;clinit&gt; WELD-000900: 3.1.3 (Final)
      17-Mar-2020 16:11:12.851 WARN [http-nio-8080-exec-6] org.jboss.weld.environment.servlet.WeldServletLifecycle.initialize WELD-ENV-000028: Weld initialization skipped - no bean archive found
      17-Mar-2020 16:11:13.024 INFO [http-nio-8080-exec-6] com.sun.faces.config.ConfigureListener.contextInitialized Initializing Mojarra 2.3.9 ( 20190401-1936 77894020e94a338c9701619b7ef6e9871c5a9079) for context '/JSF23WebApp'
      17-Mar-2020 16:11:13.567 INFO [http-nio-8080-exec-6] com.sun.faces.spi.InjectionProviderFactory.createInstance JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.
      17-Mar-2020 16:11:14.128 SEVERE [http-nio-8080-exec-6] com.sun.faces.config.ConfigureListener.contextInitialized Critical error during deployment: 
          com.sun.faces.config.ConfigurationException: Factory 'javax.faces.lifecycle.ClientWindowFactory' was not configured properly.
              at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:357)
              at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:243)
              at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:443)
              at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:237)
              at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4688)
              at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5151)
              at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
              at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
              at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
              at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
              at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
              at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:487)
              at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1642)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.base/java.lang.reflect.Method.invoke(Method.java:566)
              at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:289)
              at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809)
              at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
              at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1590)
              at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:1019)
              at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:355)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:666)
              at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
              at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:53)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
              at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
              at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
              at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
              at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
              at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
              at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              at java.base/java.lang.Thread.run(Thread.java:834)
          Caused by: javax.faces.FacesException: Unable to find CDI BeanManager
              at com.sun.faces.application.ApplicationImpl.isJsf23(ApplicationImpl.java:2714)
              at com.sun.faces.application.ApplicationImpl.addELResolver(ApplicationImpl.java:549)
              at javax.faces.application.ApplicationWrapper.addELResolver(ApplicationWrapper.java:611)
              at org.jboss.weld.environment.servlet.jsf.WeldApplication.&lt;init&gt;(WeldApplication.java:72)
              at org.jboss.weld.environment.servlet.jsf.WeldApplicationFactory.getApplication(WeldApplicationFactory.java:46)
              at com.sun.faces.application.InjectionApplicationFactory.getApplication(InjectionApplicationFactory.java:88)
              at com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:153)
              at com.sun.faces.lifecycle.ClientWindowFactoryImpl.&lt;init&gt;(ClientWindowFactoryImpl.java:63)
              at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
              at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
              at java.base/java.lang.Class.newInstance(Class.java:584)
              at javax.faces.FactoryFinderInstance.getImplGivenPreviousImpl(FactoryFinderInstance.java:391)
              at javax.faces.FactoryFinderInstance.getImplementationInstance(FactoryFinderInstance.java:255)
              at javax.faces.FactoryFinderInstance.getFactory(FactoryFinderInstance.java:529)
              at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:292)
              at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:354)
              ... 48 more
      17-Mar-2020 16:11:14.195 SEVERE [http-nio-8080-exec-6] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
      17-Mar-2020 16:11:14.199 SEVERE [http-nio-8080-exec-6] org.apache.catalina.core.StandardContext.startInternal Context [/JSF23WebApp] startup failed due to previous errors
      17-Mar-2020 16:11:14.214 SEVERE [http-nio-8080-exec-6] javax.faces.FactoryFinderInstance.getFactory Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory. Attempting to find backup.
      17-Mar-2020 16:11:14.215 SEVERE [http-nio-8080-exec-6] com.sun.faces.config.ConfigureListener.contextDestroyed Unexpected exception when attempting to tear down the Mojarra runtime
          java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory. 
              at javax.faces.FactoryFinderInstance.getFactory(FactoryFinderInstance.java:541)
              at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:292)
              at com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:152)
              at com.sun.faces.config.ConfigureListener.contextDestroyed(ConfigureListener.java:367)
              at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4735)
              at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5401)
              at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
              at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:187)
              at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
              at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
              at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
              at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
              at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:487)
              at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1642)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.base/java.lang.reflect.Method.invoke(Method.java:566)
              at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:289)
              at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809)
              at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
              at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1590)
              at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:1019)
              at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:355)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:666)
              at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
              at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:53)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
              at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
              at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
              at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
              at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
              at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
              at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              at java.base/java.lang.Thread.run(Thread.java:834)
      17-Mar-2020 16:11:15.342 INFO [http-nio-8080-exec-6] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of deployment descriptor [C:\apache-tomcat-9.0.33\conf\Catalina\localhost\JSF23WebApp.xml] has finished in [6,420] ms
  </code></pre>
  
  <p>so I searched Google for those errors:</p>
  
  <p>1) com.sun.faces.config.ConfigurationException: Factory 'javax.faces.lifecycle.ClientWindowFactory' was not configured properly. ( a possible solution <a href="https://stackoverflow.com/questions/31033946/java-lang-illegalargumentexception-javax-faces-lifecycle-clientwindowfactory">here</a> ) </p>
  
  <p>2) javax.faces.FacesException: Unable to find CDI BeanManager ( a possible solution <a href="http://alibassam.com/deploying-jsf-2-3-application-tomcat-9/" rel="nofollow noreferrer">here</a></p>
  
  <p>there were many solutions proposed .. below some of the tried ones ..</p>
  
  <p>1) empty context.xml .. as it is not necessary .. i am using Mojarra 2.3 .. before it was (as said by BalusC <a href="https://balusc.omnifaces.org/2013/10/how-to-install-cdi-in-tomcat.html" rel="nofollow noreferrer">here</a> :</p>
  
  <pre><code>    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
      &lt;Context path="/JSF23WebApp"&gt;
        &lt;Resource name="BeanManager" 
              auth="Container"
              type="javax.enterprise.inject.spi.BeanManager"
              factory="org.jboss.weld.resources.ManagerObjectFactory" /&gt;
      &lt;/Context&gt;
  </code></pre>
  
  <p>2) tried to edit the empty beans.xml file like this:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
      &lt;beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
          bean-discovery-mode="all" 
          version="2.0"&gt;
      &lt;/beans&gt;
  </code></pre>
  
  <p>3) also installed JSTL API (downloaded <em>jakarta.servlet.jsp.jstl-api-1.2.7.jar</em> from Maven repo.)..</p>
  
  <p>despite these attempts, I always get the same error (above)..</p>
  
  <p>I have attached the source code of my project (a zipped file) <a href="http://www.mediafire.com/file/l515k4aepve2c74/web.zip/file" rel="nofollow noreferrer">web.zip</a>: what is my mistake? 
  (maybe it depends on Open Jdk 11 ??)</p>
  
  <p>thanks...</p>