在WildFly 8.0.0.Beta上部署Spring应用程序的错误1 [英] Deploy error of spring application on WildFly 8.0.0.Beta 1
问题描述
首先,这是我在我的应用程序中使用的:
- Maven 3.0.5(与maven-war-plugin建立战争);
- Spring 3.2.4.RELEASE;
- Spring Security 3.1 $ 4.
-
- MyFaces 2.1.12;
- 原始4.0
- Hibernate 4.2.5。 Final(JPA 2);
- Oracle JDBC 11.2.0.2(Thin Driver);
我也使用commons *,cglib,log4j,slf4j ...如果你也需要这些版本,让我知道。
我的WAR的结构: p>
META-INF
- maven
- br.com.gsc
- projectName
pom.xml
pom.properties
- MANIFEST.MF
资源
- css
...文件
- 图像
...文件
- 图标
...文件
- js
.. .files
模板
commonHeader.xhtml
commonMenu.xhtml
template.xhtml
视图
- 管理
...文件夹和xhtml文件
- 错误
...文件夹和xhtml文件
- 登录
...文件夹和xhtml文件
index.xhtml
WEB_INF
- 类
- br(启动包)
- 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错误[org.jboss .msc.service.fail](MSC服务线程1-5)MSC000001:无法启动服务jboss.undertow.deployment.default-host./myAppName:服务中的org.jboss.msc.service.StartException jboss.undertow.deployment .default-host。/ myAppName:无法在org.jboss.msc.service.ServiceControllerImpl启动服务
$ StartTask.run(ServiceControllerImpl.java:1900)[jboss-msc-1.2.0.Beta2.jar: 1.2.0.Beta2]
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[rt.jar:1.7.0_25]
在java.util.concurrent.ThreadPoolExecutor $ Worker .run(ThreadPoolExecutor.java:615)[rt.jar:1.7.0_25]
在java.lang.Thread.run(Thread.java:724)[rt.jar:1.7.0_25]
导致:java.lang.RuntimeException:java.lang.IllegalStateException:找不到工厂javax.faces.application.ApplicationFactory的备份。
在io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:189)
在org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:86)
在org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:71)
在org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1944)[jboss -msc-1.2.0.Beta2.jar:1.2.0.Beta2]
在org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1877)[jboss-msc-1.2.0 .Beta2.jar:1.2.0.Beta2]
... 3更多
导致:java.lang.IllegalStateException:找不到工厂javax.faces.application.ApplicationFactory的备份。
在javax.faces.FactoryFinder $ FactoryManager.getFactory(FactoryFinder.java:1135)
在javax.faces.FactoryFinder.getFactory(FactoryFinder.java:379)
在org.apache.myfaces .context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:159)
在org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:210)
在javax.faces.component .UIViewRoot.setLocale(UIViewRoot.java:1488)
在org.apache.myfaces.webapp.AbstractFacesInitializer._createFacesContext(AbstractFacesInitializer.java:477)
在org.apache.myfaces.webapp.AbstractFacesInitializer.initStartupFacesContext (AbstractFacesInitializer.java:449)
在org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:113)
在io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java :173)
at io.undertow.servlet.core.DeploymentManagerImpl.d eploy(DeploymentManagerImpl.java:166)
... 7更多
2013-10-14 14:13:47,258错误[org.jboss.as.controller.management-operation](控制器引导线程)JBAS014613:操作(部署)失败 - address:([(deployment=> myAppName.war)]) - 故障描述:{JBAS014671:Failed services=> {jboss.undertow.deployment.default-host./myAppName=> org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-host./myAppName:无法启动服务
导致:java.lang.RuntimeException:java.lang.IllegalStateException:无法找到工厂javax.faces.application.ApplicationFactory的备份
导致:java.lang.IllegalStateException:找不到工厂javax.faces.application.ApplicationFactory的备份。}}
2013-10- 14 14:13:47,323 INFO [org.jboss.as.server](ServerService线程池 - 29)JBAS018559:部署了myAppName.war(运行时名称:myAppName.war)
2013-10 -14 14:13:47,324 INFO [org.jboss.as.controller](控制器启动线程)JBAS014774:服务状态报告
JBAS014777:无法启动的服务:service jboss.undertow.deployment.default-host。 / myAppName:org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-host./myAppName:无法启动服务
现在,我的
<?xml version =1.0encoding =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>
< param-name> javax.faces.PROJECT_STAGE< / param-name>
< param-value>开发< / param-value>
< context-param>
< param-name> primefaces.THEME< / param-name>
< param-value> aristo< / param-value>
< 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 daspáginasJSF 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-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)中:
- all-themes-1.0.10.jar
- antlr-2.7.7.jar
- aopalliance-1.0.jar
- asm-4.0.jar
- aspectjtools-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
- commons-codec-1.5.jar
- commons-collections-3.2.jar
- commons-digester-1.8.jar
- commons-fileupload-1.3.jar
- commons-io-2.4.jar
- commons-lang-2.5。 jar
- commons-logging-1.1.1.jar
- dom4j-1.6.1.jar
- guava-13.0.1.jar
- hibernate-commons-annotations-4.0.2.Final.jar
- hibernate-core-4.2.5。 Final.jar
- hibernate-entitymanager-4.2.5.Final.jar
- hibernate-envers-4.2.5.Final.jar
- hibernate-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-simple-1.7.5.jar
- spring-beans-3.2.4.RELEASE.jar
- spring-context-3.2.4。 RELEASE.jar
- spring-context-support-3.2.4.RELEASE.jar
- spring-core-3.2.4.RELEASE.jar
- spring-expression-3.2.4.RELEASE.jar
- spring-jdbc-3.2.4.RELEASE.jar
- spring-ldap-core-弹簧安全配置3.1.4.RELEASE.jar
- spring-orm-3.2.4.RELEASE.jar
- RELEASE.jar
- spring-security-core-3.1.4.RELEASE.jar
- spring-security-ldap-3.1.4.RELEASE。 jar
- spring-security-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
< aop-3.2.4.RELEASE.jar
如果你需要有关我的应用程序的更多细节,或关于我使用的库,请让我知道。
谢谢。
检查类路径以查看加载了哪些库。它接收到classpath上有多个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上工作
FIX:
与WildFly一起使用的其他实现(如MyFaces),捆绑的JSF实现(Mojarra)存在不兼容性。在web.xml中设置这个参数,你很好:
< context-param>
< param-name> org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL< / param-name>
< param-value> true< / param-value>
< / context-param>
I am developing a simple web application and deploying on tomcat 7. Everything works fine on tomcat 7. However, when I try to deploy the same war that works on tomcat 7 on WildFly 8.0.0.Beta1, I am facing some errors.
First of all, this is what I am using on my application:
- Maven 3.0.5 (building war with maven-war-plugin);
- Spring 3.2.4.RELEASE;
- 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 (Thin Driver);
I'm also using commons*, cglib, log4j, slf4j... if you need these versions too, let me know.
The structure of my WAR:
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
I didn't understand what is the error when I try to deploy the application on WildFly. I looked at Google about this error. No success. Please, take a look at the WildFly log below:
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
Now, the content of my 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>
I am not using any specific server resource.
UPDATE:
These JAR's are in my classpath (WEB-INF/lib):
- all-themes-1.0.10.jar
- antlr-2.7.7.jar
- aopalliance-1.0.jar
- asm-4.0.jar
- aspectjtools-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
- commons-codec-1.5.jar
- commons-collections-3.2.jar
- commons-digester-1.8.jar
- commons-fileupload-1.3.jar
- commons-io-2.4.jar
- commons-lang-2.5.jar
- commons-logging-1.1.1.jar
- dom4j-1.6.1.jar
- guava-13.0.1.jar
- hibernate-commons-annotations-4.0.2.Final.jar
- hibernate-core-4.2.5.Final.jar
- hibernate-entitymanager-4.2.5.Final.jar
- hibernate-envers-4.2.5.Final.jar
- hibernate-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-simple-1.7.5.jar
- spring-aop-3.2.4.RELEASE.jar
- spring-beans-3.2.4.RELEASE.jar
- spring-context-3.2.4.RELEASE.jar
- spring-context-support-3.2.4.RELEASE.jar
- spring-core-3.2.4.RELEASE.jar
- spring-expression-3.2.4.RELEASE.jar
- spring-jdbc-3.2.4.RELEASE.jar
- spring-ldap-core-1.3.1.RELEASE.jar
- spring-orm-3.2.4.RELEASE.jar
- spring-security-config-3.1.4.RELEASE.jar
- spring-security-core-3.1.4.RELEASE.jar
- spring-security-ldap-3.1.4.RELEASE.jar
- spring-security-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
If you need more detail about my application, or about the libs that I am using, please let me know.
Thanks.
Check classpath to see what libraries are loaded. It seams that more than one jsf*.jar is available on classpath (check war/WEB-INF/lib and jboss libs).
UPDATE:
There was a bug in previous version WildFly 8.0.0: https://issues.jboss.org/browse/WFLY-682, it is fixed in 8.0.0 Alpha 4 so it should also work on Beta 1
FIX: There is an incompatibility about the bundled JSF implementation (Mojarra) that come with WildFly with other implementations like MyFaces. Set this parameter on web.xml and your are good to go:
<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>
这篇关于在WildFly 8.0.0.Beta上部署Spring应用程序的错误1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!