JBossAS7错误:WAR部署成功,EAR部署失败

JBossAS7错误:WAR部署成功,EAR部署失败,jboss,ear,jboss7.x,Jboss,Ear,Jboss7.x,我使用相同的web应用程序,并将其部署为一场没有问题的战争。然而,作为EAR部署的应用程序失败了。相同的文件,只是不同的部署。首先,看看战争: Webapp.war . |-- error.xhtml |-- index.xhtml |-- language.xhtml |-- login.xhtml |-- META-INF |-- register.xhtml |-- resources | |-- css | | `-- layout.css | |-- images |

我使用相同的web应用程序,并将其部署为一场没有问题的战争。然而,作为EAR部署的应用程序失败了。相同的文件,只是不同的部署。首先,看看战争:

Webapp.war
.
|-- error.xhtml
|-- index.xhtml
|-- language.xhtml
|-- login.xhtml
|-- META-INF
|-- register.xhtml
|-- resources
|   |-- css
|   |   `-- layout.css
|   |-- images
|   |   `-- logo.png
|   `-- javascript
|       `-- detectScreenSize.js
|-- sendMail.xhtml
|-- templates
|   `-- masterLayout.xhtml
`-- WEB-INF
    |-- beans.xml
    |-- classes
    |   |-- ApplicationResources_es.properties
    |   |-- ApplicationResources.properties
    |   |-- com
    |   |   `-- webapp
    |   |       |-- controller
    |   |       |   |-- auth
    |   |       |   |   |-- ClientInfo.class
    |   |       |   |   |-- LoginModule.class
    |   |       |   |   |-- RBAC.class
    |   |       |   |   |-- SimpleGroup.class
    |   |       |   |   `-- SimplePrincipal.class
    |   |       |   |-- LocaleManager.class
    |   |       |   |-- SendMailBean.class
    |   |       |   |-- UserRegistration.class
    |   |       |   `-- UserRemoval.class
    |   |       |-- data
    |   |       |   `-- UserListProducer.class
    |   |       |-- exception
    |   |       |   |-- ViewExpiredExceptionExceptionHandler.class
    |   |       |   `-- ViewExpiredExceptionExceptionHandlerFactory.class
    |   |       |-- model
    |   |       |   |-- Entity.class
    |   |       |   |-- LoginHistory.class
    |   |       |   |-- Role.class
    |   |       |   |-- User.class
    |   |       |   `-- UserRole.class
    |   |       `-- util
    |   |           |-- Resources.class
    |   |           |-- TimestampAdapter.class
    |   |           `-- Util.class
    |   |-- META-INF
    |   |   |-- beans.xml
    |   |   `-- persistence.xml
    |   `-- ValidationMessages.properties
    |-- faces-config.xml
    |-- jboss-web.xml
    |-- lib
    |   |-- cssparser-0.9.5.jar
    |   |-- guava-r08.jar
    |   |-- richfaces-components-api-4.0.0.Final.jar
    |   |-- richfaces-components-ui-4.0.0.Final.jar
    |   |-- richfaces-core-api-4.0.0.Final.jar
    |   |-- richfaces-core-impl-4.0.0.Final.jar
    |   `-- sac-1.3.jar
    |-- navigation.xml
    `-- web.xml
现在,这是耳朵。除了现在它有application.xml之外,其他文件都是相同的,只是结构不同而已

Webapp.ear
.
|-- META-INF
|   |-- application.xml
|   |-- MANIFEST.MF
|   `-- maven
|       `-- com.webapp
|           `-- Webapp-ear
|               |-- pom.properties
|               `-- pom.xml
|-- Webapp-ejb-1.0-SNAPSHOT.jar
`-- Webapp-web-1.0-SNAPSHOT.war
以下是EJB JAR文件:

Webapp-ejb-1.0-SNAPSHOT.jar
.
|-- ApplicationResources_es.properties
|-- ApplicationResources.properties
|-- com
|   `-- webapp
|       |-- controller
|       |   |-- auth
|       |   |   |-- ClientInfo.class
|       |   |   |-- LoginModule.class
|       |   |   |-- RBAC.class
|       |   |   |-- SimpleGroup.class
|       |   |   `-- SimplePrincipal.class
|       |   |-- LocaleManager.class
|       |   |-- SendMailBean.class
|       |   |-- UserRegistration.class
|       |   `-- UserRemoval.class
|       |-- data
|       |   `-- UserListProducer.class
|       |-- exception
|       |   |-- ViewExpiredExceptionExceptionHandler.class
|       |   `-- ViewExpiredExceptionExceptionHandlerFactory.class
|       |-- model
|       |   |-- Entity.class
|       |   |-- LoginHistory.class
|       |   |-- Role.class
|       |   |-- User.class
|       |   `-- UserRole.class
|       `-- util
|           |-- Resources.class
|           |-- TimestampAdapter.class
|           `-- Util.class
|-- META-INF
|   |-- beans.xml
|   |-- MANIFEST.MF
|   |-- maven
|   |   `-- com.webapp
|   |       `-- Webapp-ejb
|   |           |-- pom.properties
|   |           `-- pom.xml
|   `-- persistence.xml
`-- ValidationMessages.properties
以下是WAR文件:

Webapp-web-1.0-SNAPSHOT.war
.
|-- error.xhtml
|-- index.xhtml
|-- language.xhtml
|-- login.xhtml
|-- META-INF
|   |-- MANIFEST.MF
|   `-- maven
|       `-- com.webapp
|           `-- Webapp-web
|               |-- pom.properties
|               `-- pom.xml
|-- register.xhtml
|-- resources
|   |-- css
|   |   `-- layout.css
|   |-- images
|   |   `-- logo.png
|   `-- javascript
|       `-- detectScreenSize.js
|-- sendMail.xhtml
|-- templates
|   `-- masterLayout.xhtml
`-- WEB-INF
    |-- beans.xml
    |-- faces-config.xml
    |-- jboss-web.xml
    |-- lib
    |   |-- cssparser-0.9.5.jar
    |   |-- guava-r08.jar
    |   |-- richfaces-components-api-4.0.0.Final.jar
    |   |-- richfaces-components-ui-4.0.0.Final.jar
    |   |-- richfaces-core-api-4.0.0.Final.jar
    |   |-- richfaces-core-impl-4.0.0.Final.jar
    |   `-- sac-1.3.jar
    |-- navigation.xml

    `-- web.xml
以下是EAR部署中的application.xml:

<?xml version="1.0" encoding="UTF-8"?>

<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">

  <display-name>Webapp-ear</display-name>
  <module>
    <web>
      <web-uri>Webapp-web-1.0-SNAPSHOT.war</web-uri>
      <context-root>/Webapp</context-root>
    </web>
  </module>
  <module>
    <ejb>Webapp-ejb-1.0-SNAPSHOT.jar</ejb>
  </module>
  <library-directory>lib</library-directory>
</application>

我在这里没有得到什么?请提供帮助。

当使用EAR部署时,EJB应该位于EAR的/lib目录中,或者您需要添加false以使EE子系统识别EJB JAR

另一个选项是在WAR中向MANIFEST.MF添加依赖项:Webapp-ejb-1.0-SNAPSHOT


您可以从以下文档中获得有关使用EAR加载类的更多信息。

当使用EAR部署时,EJB应该位于EAR的/lib目录中,或者您需要添加false以使EE子系统识别EJB JAR

另一个选项是在WAR中向MANIFEST.MF添加依赖项:Webapp-ejb-1.0-SNAPSHOT


您可以从以下文档中获得关于使用EAR加载类的更多信息。

首先,您的EJB bean永远不应该依赖于JSF库。JSF是为应用程序html+后台bean的视图部分设计的框架。EJB模块应该在不了解JSF的情况下运行

如果您真的需要从EJB方法引用JSF,您必须显式地通知容器JBoss7.1。这个模块依赖于JSF模块。您可以在此处找到详细信息:

首先,您的EJB bean永远不应该依赖于JSF库。JSF是为应用程序html+后台bean的视图部分设计的框架。EJB模块应该在不了解JSF的情况下运行

如果您真的需要从EJB方法引用JSF,您必须显式地通知容器JBoss7.1。这个模块依赖于JSF模块。您可以在此处找到详细信息:

我读了你指的信息,非常有用。我使用jboss的maven archetype org.jboss.spec.archetypes:jboss-javaee6-ear-webapp来生成项目,它不包含依赖项或类路径清单条目,尽管它确实有一个ejb—请参阅以查看原型生成的项目—可能是因为jboss的默认值为false。该项目中的ejb有一个producer方法,可以从facelet视图访问,它可以在没有任何JBoss配置修改的情况下正常工作。但是我遇到的问题与EAR中的模块能够访问EAR中的其他类无关。为了调试,我从应用程序中删除了ViewExpiredExceptionHandler,并发现根本的问题是EJB模块中的类不能引用faces.context.*包中的任何对象,否则会引发ClassNotFoundException。当我删除对FacesContext、ActionEvent等对象的引用时,应用程序部署时不会出错。这一定是JBossAS7的一个bug。有一个关于它的讨论。好的,在论坛上准备好了,看起来确实有一些依赖项需要添加到EJB部署中。看起来你在那里得到了更好的帮助,所以我将把它留给论坛:--@JamesR.Perkins我也面临着同样的问题。你能告诉我在哪里加这行吗?实际上,我没有得到EE子系统这个术语。因此,我应该在哪个文件中添加这一行。@JamesR.Perkins请参阅Thread。我阅读了您指向的信息,这非常有用。我使用jboss的maven archetype org.jboss.spec.archetypes:jboss-javaee6-ear-webapp来生成项目,它不包含依赖项或类路径清单条目,尽管它确实有一个ejb—请参阅以查看原型生成的项目—可能是因为jboss的默认值为false。该项目中的ejb有一个producer方法,可以从facelet视图访问,它可以在没有任何JBoss配置修改的情况下正常工作。但是我遇到的问题与EAR中的模块能够访问EAR中的其他类无关。为了调试,我从应用程序中删除了ViewExpiredExceptionHandler,并发现根本的问题是EJB模块中的类不能引用faces.context.*包中的任何对象,否则会引发ClassNotFoundException。当我删除对FacesContext、ActionEvent等对象的引用时,应用程序部署时不会出错。这一定是JBossAS7的一个bug。有一个关于它的讨论。好的,在论坛上准备好了,看起来确实有一些依赖项需要添加到EJB部署中。看起来你在那里得到了更好的帮助,所以我将把它留给论坛:--@JamesR.Perkins我也面临着同样的问题。你能告诉我在哪里加这行吗?实际上,我没有得到EE子系统这个术语。那么我应该在哪个文件中添加这一行。@JamesR.Perkins请参见thr
7.1的eadClass加载文件可在上获得,7.1的类加载文件可在上获得
17:41:02,059 WARN  [org.jboss.modules] (MSC service thread 1-2) Failed to define class com.webapp.exception.ViewExpiredExceptionExceptionHandler in Module "deployment.Webapp.ear.Webapp-ejb-1.0-SNAPSHOT.jar:main" from Service Module Loader: java.lang.LinkageError: Failed to link com/webapp/exception/ViewExpiredExceptionExceptionHandler (Module "deployment.Webapp.ear.Webapp-ejb-1.0-SNAPSHOT.jar:main" from Service Module Loader)

    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396)

    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:243)

    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73)

    at org.jboss.modules.Module.loadModuleClass(Module.java:505)

    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)

    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)

    at org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner.getPackagesInJar(HibernateAnnotationScanner.java:92)

    at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:490) [hibernate-entitymanager-4.0.0.Final.jar:4.0.0.Final]

    at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:852) [hibernate-entitymanager-4.0.0.Final.jar:4.0.0.Final]

    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:597) [hibernate-entitymanager-4.0.0.Final.jar:4.0.0.Final]

    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:72) [hibernate-entitymanager-4.0.0.Final.jar:4.0.0.Final]

    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:149) [jboss-as-jpa-7.1.0.CR1b.jar:7.1.0.CR1b]

    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:79) [jboss-as-jpa-7.1.0.CR1b.jar:7.1.0.CR1b]

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824)

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [:1.7.0_02]

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [:1.7.0_02]

    at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]

Caused by: java.lang.NoClassDefFoundError: javax/faces/context/ExceptionHandlerWrapper

    at java.lang.ClassLoader.defineClass1(Native Method) [:1.7.0_02]

    at java.lang.ClassLoader.defineClass(ClassLoader.java:791) [:1.7.0_02]

    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) [:1.7.0_02]

    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:327)

    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:391)

    ... 20 more

Caused by: java.lang.ClassNotFoundException: javax.faces.context.ExceptionHandlerWrapper from [Module "deployment.Webapp.ear.Webapp-ejb-1.0-SNAPSHOT.jar:main" from Service Module Loader]

    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)

    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)

    ... 25 more

17:41:02,143 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.persistenceunit."Webapp.ear/Webapp-ejb-1.0-SNAPSHOT.jar#PostgresPersistenceUnit": org.jboss.msc.service.StartException in service jboss.persistenceunit."Webapp.ear/Webapp-ejb-1.0-SNAPSHOT.jar#PostgresPersistenceUnit": Failed to start service

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1780) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [:1.7.0_02]

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [:1.7.0_02]

    at java.lang.Thread.run(Thread.java:722) [:1.7.0_02]

Caused by: java.lang.RuntimeException: error trying to scan <jar-file>: vfs:/content/Webapp.ear/Webapp-ejb-1.0-SNAPSHOT.jar/

    at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:855)

    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:597)

    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:72)

    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:149)

    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:79)

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

    ... 3 more

Caused by: java.lang.RuntimeException: JBAS011431: Could not load entity class 'com.webapp.exception.ViewExpiredExceptionExceptionHandler' with PersistenceUnitInfo.getNewTempClassLoader()

    at org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner.getPackagesInJar(HibernateAnnotationScanner.java:96)

    at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:490)

    at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:852)

    ... 9 more

Caused by: java.lang.ClassNotFoundException: com.webapp.exception.ViewExpiredExceptionExceptionHandler from [Module "deployment.Webapp.ear.Webapp-ejb-1.0-SNAPSHOT.jar:main" from Service Module Loader]

    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)

    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)

    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)

    at org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner.getPackagesInJar(HibernateAnnotationScanner.java:92)

    ... 11 more
<web-app
    version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">