【问题标题】:Wildfly 9.0.1.Final: EAR deployment failedWildfly 9.0.1.Final:EAR 部署失败
【发布时间】:2015-09-21 19:32:01
【问题描述】:

我正在尝试在 Wildfly 9.0.1.Final 上部署基于 struts 的 Web 应用程序。

我正在部署为包含 .war/.jar(EJB) 文件的 .ear 文件。

但它在部署期间给了我一个错误。

错误堆栈跟踪:

Failed to define class AuditMDB in Module "deployment.webapp.ear.EJB.jar:main" from Service Module Loader: java.lang.LinkageError: Failed to link AuditMDB (Module "deployment.webapp.ear.EJB.jar:main" from Service Module Loader)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:437)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:269)
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:77)
    at org.jboss.modules.Module.loadModuleClass(Module.java:560)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at org.jboss.as.server.deployment.reflect.DeploymentClassIndex.classIndex(DeploymentClassIndex.java:54)
    at org.jboss.as.ejb3.deployment.processors.dd.DeploymentDescriptorMethodProcessor.handleSessionBean(DeploymentDescriptorMethodProcessor.java:118)
    at org.jboss.as.ejb3.deployment.processors.dd.DeploymentDescriptorMethodProcessor.deploy(DeploymentDescriptorMethodProcessor.java:73)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: javax/jms/MessageListener
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:353)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:432)
    ... 19 more
Caused by: java.lang.ClassNotFoundException: javax.jms.MessageListener from [Module "deployment.webapp.ear.EJB.jar:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
    ... 23 more

请帮忙

【问题讨论】:

  • @JamesR.Perkins 请帮忙
  • 你试过以$JBOSS_HOME/bin/standalone.sh -c standalone-full.xml开头吗?我认为默认的standalone.xml配置中没有添加JMS。
  • @JamesR.Perkins 我尝试从standalone-full.xml 开始,现在我收到有关“无法创建初始查找。:javax.naming.NameNotFoundException:datasources/WEBFDMS”的错误。我的 dbLoopup 字符串是 java:jboss/datasources/WEBFDMS。另外我想知道我是否需要像上面提到的那样始终启动服务器,或者这只是一次活动。我的意思是说下次我可以像 $JBOSS_HOME/bin/standalone.sh 一样启动它
  • 对于数据源问题,您需要像下面的答案状态那样定义它。为了不必传递-c standalone-full.xml,您需要将JMS 配置添加到standalone.xml,这是默认配置。

标签: jboss jms wildfly ear


【解决方案1】:

您必须确保您的数据源已定义。在您的standalone-full.xml 中,您需要包含定义,例如:

<datasource jndi-name="java:datasources/WEBFDMS" pool-name="WEBFDMS" enabled="true" use-java-context="true">
    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
    <driver>h2</driver>
    <security>
        <user-name>sa</user-name>
        <password>sa</password>
    </security>
</datasource>

“java:datasources/WEBFDMS”可能必须是“java:jboss/datasources/WEBFDMS”

当然,这个数据源定义将简单地创建一个内存数据源。为了连接到正在运行的数据库(mysql、oracle 等),您必须对其进行不同的配置。

【讨论】:

  • 如何连接到正在运行的数据库。那么 $JBOSS_HOME/bin/standalone.sh -c Standalone-full.xml 呢?
  • -c Standalone-full.xml 只是说将其加载为您的配置文件。但需要为您的应用程序配置该文件。恐怕这不是野蝇的正确论坛,请从阅读文档开始:docs.jboss.org/author/display/WFLY8/DataSource+configuration
  • 好的。我会经历这个
猜你喜欢
  • 2023-03-18
  • 2015-08-05
  • 2016-03-26
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 2015-12-12
  • 1970-01-01
相关资源
最近更新 更多