Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与CDI的跨库依赖关系_Java_Jpa_Jboss7.x_Ejb 3.0_Cdi - Fatal编程技术网

Java 与CDI的跨库依赖关系

Java 与CDI的跨库依赖关系,java,jpa,jboss7.x,ejb-3.0,cdi,Java,Jpa,Jboss7.x,Ejb 3.0,Cdi,在过去的48小时里,我已经在谷歌上搜索了很多,但我还是一无所获,所以我希望这里的一个问题可能会有所帮助 我正在开发一个开关站服务(实际上,我将开发一整套开关站服务,因此采用这种方法),我希望将基于JPA的dao代码和实体放在一个单独的jar中,以及另一个用于其他DTO/接口的jar中 这两个其他jar都包含CDIBeans和beans.xmls,DAO jar包含一个有效的persistence.xml,它连接到我的JBoss应用服务器中的JDNI数据源 我最初的想法是将两个JAR都作为EE模块

在过去的48小时里,我已经在谷歌上搜索了很多,但我还是一无所获,所以我希望这里的一个问题可能会有所帮助

我正在开发一个开关站服务(实际上,我将开发一整套开关站服务,因此采用这种方法),我希望将基于JPA的dao代码和实体放在一个单独的jar中,以及另一个用于其他DTO/接口的jar中

这两个其他jar都包含CDIBeans和beans.xmls,DAO jar包含一个有效的persistence.xml,它连接到我的JBoss应用服务器中的JDNI数据源

我最初的想法是将两个JAR都作为EE模块加载,因为这似乎是一件明智的事情,这给了我CDI注入方面的问题,因为我的开关站应用程序看不到bean,但我意识到这只是module.xml没有配置适当的依赖项以允许weld加载CDI bean

然而,在那之后,我无法将持久性单元加载到DAO中。实体管理器一直显示为空,无论我在模块中还是在开关站应用程序中使用persistence.xml。(我在module.xml中有javax.persistence)

一些关于模块的阅读让我相信JPA在这种方法上是行不通的(如果有人能告诉我如何使它起作用,这将回答这个问题!)

所以我转而尝试将我的开关站服务罐和另外两个罐捆绑在一起

我的耳朵结构是:

+-
  sw-service.jar
  dao.jar
  dto.jar
  +-META-INF
    application.xml
而我的application.xml包含

<application>
    <module>
        <java>sw-service.jar</java>
    </module>
    <module>
        <ejb>dao.jar</ejb>
    </module>
    <module>
        <ejb>dto.jar</ejb>
    </module>
</application>
有人能告诉我如何让持久化单元在开关站服务和JBoss模块之间穿行吗,或者我的EAR文件缺少了什么,因为我对此完全不知所措

10:00:51,794 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015876: Starting deployment of "sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear" (runtime-name: "sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear") 10:00:51,880 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876: Starting deployment of "null" (runtime-name: "sy-service-0.0.1-SNAPSHOT.jar") 10:00:51,880 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015876: Starting deployment of "null" (runtime-name: "dao-0.0.1-SNAPSHOT.jar") 10:00:51,880 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "null" (runtime-name: "dto-0.0.1-SNAPSHOT.jar") 10:00:51,905 INFO  [org.jboss.as.jpa] (MSC service thread 1-3) JBAS011401: Read persistence.xml for my_pu 10:00:51,974 INFO  [org.jboss.weld.deployer] (MSC service thread 1-5) JBAS016002: Processing weld deployment sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear 10:00:51,984 INFO  [org.jboss.weld.deployer] (MSC service thread 1-5) JBAS016002: Processing weld deployment sy-service-0.0.1-SNAPSHOT.jar 10:00:51,993 INFO  [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016002: Processing weld deployment dao-0.0.1-SNAPSHOT.jar 10:00:51,985 INFO  [org.jboss.weld.deployer] (MSC service thread 1-3) JBAS016002: Processing weld deployment dto-0.0.1-SNAPSHOT.jar 10:00:52,026 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named ActivitiesDAO in deployment unit subdeployment "dao-0.0.1-SNAPSHOT.jar" of deployment "sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear" are as follows:

        java:global/sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT/dao-0.0.1-SNAPSHOT/ActivitiesDAO!org.test.rich.dao.ActivitiesDAO
        java:app/dao-0.0.1-SNAPSHOT/ActivitiesDAO!org.test.rich.dao.ActivitiesDAO
        java:module/ActivitiesDAO!org.test.rich.dao.ActivitiesDAO
        java:global/sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT/dao-0.0.1-SNAPSHOT/ActivitiesDAO
        java:app/dao-0.0.1-SNAPSHOT/ActivitiesDAO
        java:module/ActivitiesDAO   10:00:52,076 INFO  [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016005: Starting Services for CDI deployment: sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear 10:00:52,102 INFO  [org.jboss.weld.deployer] (MSC service thread 1-4) JBAS016008: Starting weld service for deployment sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear 10:00:52,103 INFO  [org.switchyard] (MSC service thread 1-1) Deploying SwitchYard application 'sy-service-0.0.1-SNAPSHOT.jar' 10:00:52,233 INFO  [org.switchyard] (MSC service thread 1-6) Deploying SwitchYard application 'dao-0.0.1-SNAPSHOT.jar' 10:00:52,239 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.deployment.subunit."sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear"."dao-0.0.1-SNAPSHOT.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear"."dao-0.0.1-SNAPSHOT.jar".INSTALL: JBAS 018733: Failed to process phase INSTALL of subdeployment "dao-0.0.1-SNAPSHOT.jar" of deployment "sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_75]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_75]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75] Caused by: java.lang.NullPointerException
        at org.switchyard.as7.extension.deployment.SwitchYardDeploymentProcessor.deploy(SwitchYardDeploymentProcessor.java:119)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10]
        ... 5 more   10:00:52,485 ERROR [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS015870: Deploy of deployment "sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear" was rolled back with the following failure message: {
    "JBAS014671: Failed services" => {"jboss.deployment.subunit.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear\".\"dao-0.0.1-SNAPSHOT.jar\".INSTALL"
=> "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear\".\"dao-0.0.1-SNAPSHOT.jar\".INSTALL: JBAS018733: Failed to process phase INSTALL of subdeployment\"dao-0.0.1-SNAPSHOT.jar\" of deployment \"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear\"
    Caused by: java.lang.NullPointerException"},
    "JBAS014771: Services with missing/unavailable dependencies" => [
        "jboss.deployment.unit.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear\".deploymentCompleteService is missing [jboss.deployment.subunit.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear\".\"dao-0.0.1-SNAPSHOT.jar\".deploymentCompleteService]",
        "jboss.deployment.unit.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear\".WeldStartService is missing [jboss.persistenceunit.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear/dao-0.0.1-SNAPSHOT.jar#my_pu\"]",
        "jboss.naming.context.java.comp.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT\".\"dao-0.0.1-SNAPSHOT\".ActivitiesDAO.Validator is missing [jboss.naming.context.java.comp.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT\".\"dao-0.0.1-SNAPSHOT\".ActivitiesDAO]",
        "jboss.naming.context.java.comp.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT\".\"dao-0.0.1-SNAPSHOT\".ActivitiesDAO.ValidatorFactory is missing [jboss.naming.context.java.comp.\"sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT\".\"dao-0.0.1-SNAPSHOT\".ActivitiesDAO]"
    ] } 10:00:52,496 INFO  [org.jboss.weld.deployer] (MSC service thread 1-1) JBAS016009: Stopping weld service for deployment sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear 10:00:52,560 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015877: Stopped deployment null (runtime-name: dto-0.0.1-SNAPSHOT.jar) in 74ms 10:00:52,562 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment null (runtime-name: dao-0.0.1-SNAPSHOT.jar) in 76ms 10:00:52,561 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment null (runtime-name: sy-service-0.0.1-SNAPSHOT.jar) in 75ms 10:00:52,578 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear (runtime-name: sy-service-ear-deployment-assembly-0.0.1-SNAPSHOT.ear) in 92ms