Ошибка запуска Tomcat8 с приложением Primefaces JSF - PullRequest
0 голосов
/ 03 июля 2019

У меня нормально работает приложение JSF2.2 на Tomcat7. Теперь мне нужно переместить его в Tomcat8, и приложение больше не запускается.

Ошибка:

03-Jul-2019 15:41:47.655 INFO [localhost-startStop-1] org.primefaces.webapp.PostConstructApplicationEventListener.processEvent Running on PrimeFaces 5.1
03-Jul-2019 15:41:47.655 INFO [localhost-startStop-1] org.primefaces.webapp.PostConstructApplicationEventListener.processEvent Running on PrimeFaces 5.1
03-Jul-2019 15:41:47.655 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
03-Jul-2019 15:41:47.659 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/NPSAdmin] startup failed due to previous errors
03-Jul-2019 15:41:47.662 SEVERE [localhost-startStop-1] javax.faces.FactoryFinder$FactoryManager.getFactory Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory. Attempting to find backup.
03-Jul-2019 15:41:47.663 SEVERE [localhost-startStop-1] 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.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1135)
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:379)
    at com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:140)
    at com.sun.faces.config.ConfigureListener.contextDestroyed(ConfigureListener.java:310)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4817)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5474)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:980)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1851)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Я искал похожие проблемы и не мог их решить. В моей библиотеке Tomcat у меня есть servlet-api.jar, но нет другого файла, связанного с jsf. В моем веб-приложении у меня есть: JSF-апи-2.2.2.jar JSF-осущ-2.2.2.jar primefaces-5.1.jar Других jar, таких как javax.faces, в каталогах lib не найдено

Мы также видим из журналов, что основные лица найдены и активированы:

org.primefaces.webapp.PostConstructApplicationEventListener.processEvent Running on PrimeFaces 5.1

Так что я чувствую, что это не проблема исправления класса, объясняющая, почему Фабрика не была найдена.

Я искал логи кота, но там ничего нет

Я запускаю эту проблему с Tomcat8 на Mac OSX и на Ubuntu

Мой 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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>NPSAdmin</display-name>
  <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>/faces/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>

  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</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.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
  </context-param>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
            /WEB-INF/applicationContext.xml
            /WEB-INF/securityContext.xml
        </param-value>
  </context-param>
<context-param>  
    <param-name>primefaces.THEME</param-name>  
    <param-value>npsadmin</param-value>  
</context-param>   
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
  </listener>
  <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>

    <!-- JNDI DB Connection -->
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/AnonymDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

1 Ответ

0 голосов
/ 03 июля 2019

Спасибо за ваши комментарии.Я также пытался удалить запись com.sun.faces.config.ConfigureListener в web.xml.

Это не изменилось.

Причина была проста: не удалось запустить пружинный компонент из-за проблемы конфигурации.Вот где проблема была.Сообщение об ошибке вводило в заблуждение.Я исправил конфигурацию, и она работает.

Обратите внимание, что это сообщение об ошибке может вводить в заблуждение

...