java - 如何在EAR项目中部署EJB项目和JPA项目

标签 java eclipse jakarta-ee jboss

我创建了2个项目,一个是EJB,一个是JPA。 JPA项目定义实体类和perpetual.xml。 EBJ项目导入JPA项目,我定义了EJB session bean来通过实体管理器连接数据库。详情请参阅下图。但是在Jboss 7上运行时,出现错误。

enter image description here

03:23:59,546 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.deployment.subunit."TestApps.ear"."TestEJB.jar".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."TestApps.ear"."TestEJB.jar".POST_MODULE: Failed to p
rocess phase POST_MODULE of subdeployment "TestEJB.jar" of deployment "TestApps.ear"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [rt.jar:1.6.0_22]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.6.0_22]
        at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_22]
Caused by: java.lang.RuntimeException: Error getting reflective information for class com.ejb.services.LotUpdatManagerBean with ClassLoader ModuleClassLoader for Module "deployment.TestApps.ear.TestEJB.jar:main" from Service Module Loader
        at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
        at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)
        at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)
        at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        ... 5 more
Caused by: java.lang.NoClassDefFoundError: com/test/model/LotUpdates
        at java.lang.Class.getDeclaredMethods0(Native Method) [rt.jar:1.6.0_22]
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source) [rt.jar:1.6.0_22]
        at java.lang.Class.getDeclaredMethods(Unknown Source) [rt.jar:1.6.0_22]
        at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:65) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        ... 10 more
Caused by: java.lang.ClassNotFoundException: com.test.model.LotUpdates from [Module "deployment.TestApps.ear.TestEJB.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.performLoadClassChecked(ConcurrentClassLoader.java:423)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
        ... 15 more

03:23:59,762 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "TestApps.ear" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.subunit.\"TestApps.ear\".\"TestEJB.jar\".POST_MODULE" => "org.jboss.msc.service.StartExce
ption in service jboss.deployment.subunit.\"TestApps.ear\".\"TestEJB.jar\".POST_MODULE: Failed to process phase POST_MODULE of subdeployment \"TestEJB.jar\" of deployment \"TestApps.ear\""}}
03:23:59,765 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment TestEJB.jar in 2ms
03:23:59,767 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment TestApps.ear in 4ms
03:23:59,768 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.subunit."TestApps.ear"."TestEJB.jar".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."TestApps.ear"."TestEJB.jar".POST_MODULE: Failed to process phase POST_MODULE of subdeployment "TestE
JB.jar" of deployment "TestApps.ear"

我失败了。任何人都可以纠正我,告诉我如何部署(jpa项目和ejb项目在同一个耳朵)。

最佳答案

您有 2 个潜在的选择:

  • 如果 TestJpa.jar 位于 ear\lib 文件夹中,默认情况下它应该在 ejb 模块中可见(确保 EAR 位于 6.0 中) > 版本)
  • 通过 EJB 项目、JPA 项目中的部署程序集手动添加 - 应该会导致 EJB 模块的 list 文件发生更改。

如果您正确配置它,无论使用哪种方式,您都应该在 Eclipse 的 EJB Module > EAR Libraries 中看到 JPA 项目,而无需将其添加为构建路径中的项目

关于java - 如何在EAR项目中部署EJB项目和JPA项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26929483/

相关文章:

java - 在构建路径中从 jre 引用 jar

java - PrimeFaces 3.0.M4 文件上传的另一个困难

jakarta-ee - 检索 Websphere 集群上的完整 JSESSIONID

java - SQLite 数据检索到一个类

java - 如何在java中将(Java源代码)字符串转换为(HTML实体(十六进制))字符串?

android studio为模块添加.aar依赖而不生成其他.gradle文件

java.io.FileNotFoundException : Could not open ServletContext resource [/resources/properties/database. 属性]

java - 将 ARFF 文件打印为二维数组

java - 无法从 html 响应中提取属性

php - zend 调试多个页面