Ошибка развертывания весеннего приложения на WildFly 8.0.0.Beta 1

Я разрабатываю простое веб-приложение и развертываю его на tomcat 7. Все работает нормально на tomcat 7. Однако, когда я пытаюсь развернуть ту же войну, которая работает на tomcat 7 на WildFly 8.0.0.Beta1, я сталкиваюсь с некоторыми ошибками.

Прежде всего, это то, что я использую в своем приложении:

  • Maven 3.0.5 (построение войны с плагином maven-war);
  • Весна 3.2.4.РЕЛИЗ;
  • Spring Security 3.1.4.RELEASE;
  • MyFaces 2.1.12;
  • Primefaces 4.0
  • Hibernate 4.2.5.Final (JPA 2);
  • Oracle JDBC 11.2.0.2 (тонкий драйвер);

Я также использую commons *, cglib, log4j, slf4j ... если вам тоже нужны эти версии, дайте мне знать.

Структура моей ВОЙНЫ:

META-INF
    - maven
        - br.com.gsc
            - projectName
                pom.xml
                pom.properties
    - MANIFEST.MF
resources
    - css
        ...files
    - images
        ...files
        - icons
            ...files
    - js
        ...files
templates
    commonHeader.xhtml
    commonMenu.xhtml
    template.xhtml
views
    - admin
        ...folders and xhtml files
    - errors
        ...folders and xhtml files
    - login
        ...folders and xhtml files
    index.xhtml
WEB_INF
    - classes
        - br (start os the packages)
            - com
                - bla
                    - bla2...
        datasources.properties
        log4j.properties
        spring-context-beans.xml
        spring-context-datasources.xml
        spring-context-persistences.xml
        spring-context-security.xml
    - lib
    .faces-config.xml.jsfdia
    faces-config.xml
    web.xml

Я не понял, в чем ошибка, когда пытаюсь развернуть приложение на WildFly. Посмотрел в гугле по поводу этой ошибки. Безуспешно. Пожалуйста, посмотрите логи WildFly ниже:

2013-10-14 14:13:47,231 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.undertow.deployment.default-host./myAppName: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-host./myAppName: Failed to start service
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1900) [jboss-msc-1.2.0.Beta2.jar:1.2.0.Beta2]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
    at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory. 
    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:189)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:86)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:71)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1944) [jboss-msc-1.2.0.Beta2.jar:1.2.0.Beta2]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1877) [jboss-msc-1.2.0.Beta2.jar:1.2.0.Beta2]
    ... 3 more
Caused by: 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 org.apache.myfaces.context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:159)
    at org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:210)
    at javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:1488)
    at org.apache.myfaces.webapp.AbstractFacesInitializer._createFacesContext(AbstractFacesInitializer.java:477)
    at org.apache.myfaces.webapp.AbstractFacesInitializer.initStartupFacesContext(AbstractFacesInitializer.java:449)
    at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:113)
    at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:173)
    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:166)
    ... 7 more

2013-10-14 14:13:47,258 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "myAppName.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.undertow.deployment.default-host./myAppName" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-host./myAppName: Failed to start service
    Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory. 
    Caused by: java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory. "}}
2013-10-14 14:13:47,323 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 29) JBAS018559: Deployed "myAppName.war" (runtime-name : "myAppName.war")
2013-10-14 14:13:47,324 INFO  [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.undertow.deployment.default-host./myAppName: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-host./myAppName: Failed to start service

Теперь содержимое моего 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>AppName</display-name>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-context*.xml</param-value>
  </context-param>

  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>

  <context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>aristo</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>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
  </listener>

  <security-constraint>
    <display-name>Protege os fontes das páginas JSF quando acessadas diretamente</display-name>
    <web-resource-collection>
      <web-resource-name>XHTML</web-resource-name>
      <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
  </filter-mapping>

  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jspa</url-pattern>
  </servlet-mapping>

  <session-config>
    <session-timeout>960</session-timeout>
  </session-config>

  <error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/views/errors/viewExpired.jspa</location>
  </error-page>

  <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/views/errors/error.jspa</location>
  </error-page>

  <error-page>
    <error-code>404</error-code>
    <location>/views/errors/notfound.jspa</location>
  </error-page>

  <welcome-file-list>
    <welcome-file>/views/index.jspa</welcome-file>
  </welcome-file-list>
</web-app>

Я не использую какой-либо конкретный серверный ресурс.

ОБНОВИТЬ:

Эти JAR находятся в моем пути к классам (WEB-INF / lib):

  • все темы-1.0.10.jar
  • antlr-2.7.7.jar
  • aopalliance-1.0.jar
  • asm-4.0.jar
  • аспектjtools-1.5.4.jar
  • bcmail-jdk14-1.38.jar
  • bcprov-jdk14-1.38.jar
  • bctsp-jdk14-1.38.jar
  • bonecp-0.8.0-rc1.jar
  • cglib-3.0.jar
  • Commons-beanutils-1.8.3.jar
  • Обще-кодек-1.5.jar
  • общие коллекции-3.2.jar
  • Коммонс-варочный котел-1.8.jar
  • общие-fileupload-1.3.jar
  • общие-io-2.4.jar
  • Commons-lang-2.5.jar
  • Commons-logging-1.1.1.jar
  • dom4j-1.6.1.jar
  • гуава-13.0.1.jar
  • hibernate-commons-annotations-4.0.2.Final.jar
  • спящий режим-ядро-4.2.5.Final.jar
  • hibernate-entitymanager-4.2.5.Final.jar
  • спящий режим-envers-4.2.5.Final.jar
  • спящий режим-jpa-2.0-api-1.0.1.Final.jar
  • itext-4.2.0.jar
  • javassist-3.15.0-GA.jar
  • jboss-logging-3.1.0.GA.jar
  • jboss-transaction-api_1.1_spec-1.0.1.Final.jar
  • jcommon-1.0.15.jar
  • jfreechart-1.0.12.jar
  • jstl-1.2.jar
  • log4j-1.2.17.jar
  • myfaces-api-2.1.12.jar
  • myfaces-impl-2.1.12.jar
  • ojdbc6-11.2.0.2.jar
  • omnifaces-1.5.jar
  • pdf-renderer-1.0.5.jar
  • poi-3.9.jar
  • Primefaces-4.0.jar
  • slf4j-api-1.7.5.jar
  • slf4j-простой-1.7.5.jar
  • весна-aop-3.2.4.RELEASE.jar
  • Spring-beans-3.2.4.RELEASE.jar
  • весна-контекст-3.2.4.RELEASE.jar
  • Spring-context-support-3.2.4.RELEASE.jar
  • Spring-core-3.2.4.RELEASE.jar
  • весна-выражение-3.2.4.RELEASE.jar
  • весна-jdbc-3.2.4.RELEASE.jar
  • весна-ldap-core-1.3.1.RELEASE.jar
  • Spring-orm-3.2.4.RELEASE.jar
  • весна-безопасность-config-3.1.4.RELEASE.jar
  • весна-безопасность-ядро-3.1.4.RELEASE.jar
  • весна-безопасность-ldap-3.1.4.RELEASE.jar
  • весна-безопасность-web-3.1.4.RELEASE.jar
  • spring-tx-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar xml-apis-1.0.b2.jar

Если вам нужна дополнительная информация о моем приложении или о библиотеках, которые я использую, дайте мне знать.

Спасибо.


person humungs    schedule 14.10.2013    source источник
comment
Эммм ... Сложность Spring на Java EE 7?   -  person Paul Vargas    schedule 14.10.2013
comment
Что ж, нельзя ли развернуть приложение Spring в контейнере JEE?   -  person humungs    schedule 15.10.2013


Ответы (1)


Проверьте путь к классам, чтобы узнать, какие библиотеки загружены. Похоже, что в пути к классам доступно более одного jsf * .jar (проверьте war / WEB-INF / lib и jboss libs).

ОБНОВИТЬ:

В предыдущей версии WildFly 8.0.0 была ошибка: https://issues.jboss.org/browse/WFLY-682, он исправлен в 8.0.0 Alpha 4, поэтому должен работать и в Beta 1.

ИСПРАВЛЕНИЕ: встроенная реализация JSF (Mojarra), поставляемая с WildFly, несовместима с другими реализациями, такими как MyFaces. Установите этот параметр в web.xml, и все готово:

<context-param>
    <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
    <param-value>true</param-value>
</context-param>
person ragnor    schedule 15.10.2013
comment
Я обновил свой вопрос со всеми библиотеками на WEB-INF / libs. Я не менял библиотеки JBoss, и да, JBoss (WildFly) поставляется с библиотеками JSF * (mojarra). Однако я использую MyFaces. Может быть несовместимость какая-то? - person humungs; 15.10.2013
comment
Эта ошибка была исправлена ​​в WildFly Alpha 4. В настоящее время основной версией является Beta 1. Я полагаю, что эта ошибка исправлена ​​в Beta 1. Дата выпуска версии Beta 1 - 04.10.2013. Я попробую установить для WAR_BUNDLES_JSF_IMPL значение false, чтобы посмотреть, что произойдет. - person humungs; 15.10.2013
comment
Вы правы, моя беда. Тем не менее, существует некоторая коллизия и конфликт между реализацией JSF, предоставляемой WildFly (mojarra), и используемой вашим приложением (MyFaces). - person ragnor; 15.10.2013
comment
Ты прав. Я установил org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL на true, и приложение было развернуто. Но я столкнулся с другой проблемой. Когда я открываю приложение, все приложение не работает. Ни CSS, ни JS ... Похоже на несовместимость с Primefaces или MyFaces. Пока не знаю. Но спасибо за подсказку об ошибке. С его помощью я могу развернуть приложение. - person humungs; 15.10.2013
comment
Я обновил ваш ответ информацией о параметре WAR_BUNDLES_JSF_IMPL. Спасибо еще раз. - person humungs; 15.10.2013