Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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

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 如何在JBoss中的2个EAR之间共享JPA数据模型;野蝇“;_Java_Jpa_Deployment_Wildfly_Ear - Fatal编程技术网

Java 如何在JBoss中的2个EAR之间共享JPA数据模型;野蝇“;

Java 如何在JBoss中的2个EAR之间共享JPA数据模型;野蝇“;,java,jpa,deployment,wildfly,ear,Java,Jpa,Deployment,Wildfly,Ear,我们的JBoss v8“Wildfly”部署如下: App-ear.ear |_App-model.jar |_App-ejb.jar |_App-web.war Second-ear.ear |_Second-web.war <?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <dep

我们的JBoss v8“Wildfly”部署如下:

App-ear.ear
|_App-model.jar
|_App-ejb.jar
|_App-web.war
Second-ear.ear
|_Second-web.war
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>

        <dependencies>
            <module name="deployment.App-ear.ear.App-model.jar" />   
        </dependencies>

    </deployment>
</jboss-deployment-structure>
此部署在
App model.jar
中附带了一个
persistence.xml
。现在,我想使用另一个WAR模块部署第二个EAR,该模块可以独立于原始应用程序重新部署。因此我创造了第二只耳朵,像这样:

App-ear.ear
|_App-model.jar
|_App-ejb.jar
|_App-web.war
Second-ear.ear
|_Second-web.war
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>

        <dependencies>
            <module name="deployment.App-ear.ear.App-model.jar" />   
        </dependencies>

    </deployment>
</jboss-deployment-structure>
第二个应用程序在Eclipse开发期间(设置为Maven项目)对App model.jar有一个类路径依赖关系,并且构建得很好。为了使该依赖关系在运行时可用,我对第二个ear.ear/META-INF/jboss deployment structure.xml进行了如下编辑:

App-ear.ear
|_App-model.jar
|_App-ejb.jar
|_App-web.war
Second-ear.ear
|_Second-web.war
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>

        <dependencies>
            <module name="deployment.App-ear.ear.App-model.jar" />   
        </dependencies>

    </deployment>
</jboss-deployment-structure>

如何解决这个问题?

我现在已经成功地部署了我的两只耳朵。。。谢谢你对我原来的问题的评论。如果
persistence.xml
不包含JNDI绑定,我最初使用包含相同数据模型JAR的2EAR的方法是可行的。谢谢@Franck!提到的
jboss部署结构.xml
不再指我的另一个EAR

现在,我的部署如下所示:

App-ear.ear
|_App-model.jar
|_App-ejb.jar
|_App-web.war
Second-ear.ear
|_Second-web.war
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>

        <dependencies>
            <module name="deployment.App-ear.ear.App-model.jar" />   
        </dependencies>

    </deployment>
</jboss-deployment-structure>

这对两个应用程序都有效,我在这两种情况下都成功访问了数据库。

这也不起作用,因为JBoss AS会尝试部署同一个持久化单元(unitname)两次。。。失败了。这是我的第一个方法<代码>原因:org.jboss.msc.service.DuplicateServiceException:service jboss.naming.context.java.myEntityManagerFactory已注册返回Gimby的解决方案:为什么不将没有
persistence.xml
文件的实体放在单独的jar中,然后在每个EAR中从jar内部导入实体?通过这种方式,Wildfly将避免两次创建同名的EntityManagerFactory。我不想浪费时间尝试这个。当前的错误表明这无法解决问题,因为它在我的第二个ear上下文中提到了持久性单元:
,原因是:java.lang.IllegalArgumentException:JBAS016069:将持久性单元注入CDI托管bean时出错。在部署第二个ear中找不到名为MyPersistenceUnitName的持久性单元。ear
我已经使用相同的模型部署了多个ear,并且以前建议的方法可以工作。问题是我没有将EMF附加到jndi,这就是为什么会出现第一个异常。我希望另一种方法。。。如果没有别的东西进来,我就试试这个。