部署 Java 企业应用程序失败

Posted

技术标签:

【中文标题】部署 Java 企业应用程序失败【英文标题】:Deploy a Java Enterprise Application fails 【发布时间】:2014-06-29 01:15:18 【问题描述】:

使用 Netbeans,我创建了带有 ejb 模块和 war 模块的 Java 企业应用程序。 我在战争模块中做了一些改变,一切都很好。但现在我正在尝试调用 ejb 模块中定义的远程 ejb。我已经按照本教程https://netbeans.org/kb/docs/javaee/entappclient.html 进行操作。 现在,当我尝试在我的应用服务器 (JBoss AS7) 中部署 ear 文件时,我收到以下错误:

"JBAS014653:复合操作失败并被回滚。步骤 失败:" => "操作步骤 2" => "JBAS014671: 失败的服务" => "jboss.deployment.subunit.\"events.ear\".\"events-ejb.jar\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"events.ear\".\"events-ejb.jar\".POST_MODULE: 未能处理子部署的阶段 POST_MODULE \"events-ejb.jar\" 部署 \"events.ear\"" /Users/Luis/NetBeansProjects/events/nbproject/build-impl.xml:307: 模块尚未部署。

为什么会这样?

编辑

teste-ejb 模块 NewSessionBean

package a;

import javax.ejb.Stateless;

@Stateless
public class NewSessionBean implements NewSessionBeanRemote 

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

teste-war 模块(未修改)

AuthenticationInterface(Java 应用程序) SessionbeanRemote

package a;

import javax.ejb.Remote;

@Remote
public interface NewSessionBeanRemote 


2º 编辑

17:59:24,759 WARN [org.jboss.modules](MSC 服务线程 1-4)失败 在 Module 中定义类 a.NewSessionBean 来自服务模块加载器的“deployment.teste-ejb.jar:main”: java.lang.LinkageError: 无法链接 a/NewSessionBean (Module 来自服务模块加载器的“deployment.teste-ejb.jar:main”) 在 org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396) 在 org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:243) 在 org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73) 在 org.jboss.modules.Module.loadModuleClass(Module.java:517) 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) 在 java.lang.Class.forName0(本机方法)[rt.jar:1.7.0_51] 在 java.lang.Class.forName(Class.java:270) [rt.jar:1.7.0_51] 在 org.jboss.as.server.deployment.reflect.DeploymentClassIndex.classIndex(DeploymentClassIndex.java:54) 在 org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:63) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final] 在 org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final] 在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51] 在 java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] 引起:java.lang.NoClassDefFoundError: a/NewSessionBeanRemote 在 java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_51] 在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) [rt.jar:1.7.0_51] 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) [rt.jar:1.7.0_51] 在 org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:327) 在 org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:391) ... 19 更多原因:java.lang.ClassNotFoundException: a.NewSessionBeanRemote from [Module "deployment.teste-ejb.jar:main" 来自服务模块加载器] 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) ... 24 更多

17:59:24,860 WARN [org.jboss.modules](MSC 服务线程 1-4)失败 在 Module 中定义类 a.NewSessionBean 来自服务模块加载器的“deployment.teste-ejb.jar:main”: java.lang.LinkageError: 无法链接 a/NewSessionBean (Module 来自服务模块加载器的“deployment.teste-ejb.jar:main”) 在 org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:243) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.Module.loadModuleClass(Module.java:517) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.getEjbClass(BusinessViewAnnotationProcessor.java:225) 在 org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.deploy(BusinessViewAnnotationProcessor.java:97) 在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51] 在 java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] 引起:java.lang.NoClassDefFoundError: a/NewSessionBeanRemote 在 java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_51] 在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) [rt.jar:1.7.0_51] 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) [rt.jar:1.7.0_51] 在 org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:327) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:391) [jboss-modules.jar:1.1.1.GA] ... 16 更多原因:java.lang.ClassNotFoundException: a.NewSessionBeanRemote from [Module "deployment.teste-ejb.jar:main" 来自服务模块加载器] 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA] 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA]

17:59:24,970 错误 [org.jboss.msc.service.fail](MSC 服务线程 1-4) MSC00001:启动服务失败 jboss.deployment.unit."teste-ejb.jar".POST_MODULE: 服务中的 org.jboss.msc.service.StartException jboss.deployment.unit."teste-ejb.jar".POST_MODULE: 处理失败 部署“teste-ejb.jar”的阶段 POST_MODULE 在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51] 在 java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] 引起: org.jboss.as.server.deployment.DeploymentUnitProcessingException: 无法加载 EJB 类 a.NewSessionBean 在 org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.getEjbClass(BusinessViewAnnotationProcessor.java:227) 在 org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.deploy(BusinessViewAnnotationProcessor.java:97) 在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] ... 5 更多原因:java.lang.ClassNotFoundException: a.NewSessionBean from [Module "deployment.teste-ejb.jar:main" from 服务模块加载器] 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) 在 org.jboss.as.ejb3.deployment.processors.BusinessViewAnnotationProcessor.getEjbClass(BusinessViewAnnotationProcessor.java:225) ... 7 更多

17:59:25,033 INFO [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS015870:部署“teste-ejb.jar”的部署被回滚 带有失败消息 "JBAS014671: 失败的服务" => "jboss.deployment.unit.\"teste-ejb.jar\".POST_MODULE" => “服务中的 org.jboss.msc.service.StartException jboss.deployment.unit.\"teste-ejb.jar\".POST_MODULE: 处理失败 部署阶段 POST_MODULE \"teste-ejb.jar\"" 17:59:25,037 INFO [org.jboss.as.server.deployment](MSC 服务线程 1-6)JBAS015877: 在 3 毫秒内停止部署 teste-ejb.jar 17:59:25,059 信息 [org.jboss.as.controller] (DeploymentScanner-threads - 1) JBAS014774: 服务状态报告 JBAS014777:服务启动失败: 服务 jboss.deployment.unit."teste-ejb.jar".POST_MODULE: 服务中的 org.jboss.msc.service.StartException jboss.deployment.unit."teste-ejb.jar".POST_MODULE: 处理失败 部署“teste-ejb.jar”的阶段 POST_MODULE

17:59:25,071 错误 [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) "JBAS014653: 复合操作 失败并被回滚。失败的步骤:" => "操作步骤 2" => "JBAS014671: 失败的服务" => "jboss.deployment.unit.\"teste-ejb.jar\".POST_MODULE" => “服务中的 org.jboss.msc.service.StartException jboss.deployment.unit.\"teste-ejb.jar\".POST_MODULE: 处理失败 部署阶段 POST_MODULE \"teste-ejb.jar\""

谢谢

【问题讨论】:

您确定您的日志中没有任何其他错误吗?可以分享一下吗? 我创建了一个新项目,并且我在教程中所做的那样,它似乎可以工作。我现在正在重新制作我的洞项目以找到错误。如果错误仍然存​​在,我将发布代码。还是谢谢! 嗯,它似乎仍然无法正常工作......你能告诉我使用企业应用程序在 Netbeans 中创建远程 ejb 的正确步骤是什么吗? 我仍然需要您的日志文件中的相关错误。 我唯一的想法是: 1- 创建一个带有 ejb 和 web 模块的企业应用程序。 2-创建一个没有main的java应用程序。 3- 使用上面的 java 应用程序创建一个远程会话 bean。我只需要这样做,这样我就无法部署 ejb 模块。我将使用执行此操作后获得的代码更新我的帖子。 【参考方案1】:

我对netbeans 了解不多。我建议像您上面链接的教程一样使用 GlassFish。如果您真的想使用 JBoss AS 7,那么您需要开始阅读文档。默认情况下,由于适当的隔离类加载器,JBoss 中的模块无法看到彼此。我的猜测是你只需要关闭它或正确打包你的代码。文档在这里:

https://docs.jboss.org/author/display/AS7/Developer+Guide

【讨论】:

以上是关于部署 Java 企业应用程序失败的主要内容,如果未能解决你的问题,请参考以下文章

Payara中的Apache Camel:'java:/ TransactionManager'查找失败

Deployment descriptor

Deployment descriptor

企业部署BI系统怎么能一直做下去,PDCA闭环是关键

长期部署ERP,企业仍停滞不前,怎么破?

JAVA企业级应用TOMCAT实战