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
Jakarta ee 在glassfish服务器上跨EAR共享(JPA)业务实体_Jakarta Ee_Jpa_Glassfish_Java Ee 6_Glassfish 3 - Fatal编程技术网

Jakarta ee 在glassfish服务器上跨EAR共享(JPA)业务实体

Jakarta ee 在glassfish服务器上跨EAR共享(JPA)业务实体,jakarta-ee,jpa,glassfish,java-ee-6,glassfish-3,Jakarta Ee,Jpa,Glassfish,Java Ee 6,Glassfish 3,我在glassfish 3.1.2实例中部署了几个EAR。我希望能够将be从EAR a中的类移交给EAR B中的类,这意味着类B可以更新be 这可能吗?如何配置persistence.xmls来实现这一点 我在web上找到的所有信息都集中在一个应用程序(ear)中的模块(jar、war)之间的共享上。我想在不同ear中的模块之间共享(ear B中的war A从ear D中的jar C获取BE) 更新: 我怀疑自己,我试图在这里实现的是好的设计或最佳实践。整个故事是,我正在将Glassfish 3

我在glassfish 3.1.2实例中部署了几个EAR。我希望能够将be从EAR a中的类移交给EAR B中的类,这意味着类B可以更新be

这可能吗?如何配置persistence.xmls来实现这一点

我在web上找到的所有信息都集中在一个应用程序(ear)中的模块(jar、war)之间的共享上。我想在不同ear中的模块之间共享(ear B中的war A从ear D中的jar C获取BE)

更新: 我怀疑自己,我试图在这里实现的是好的设计或最佳实践。整个故事是,我正在将Glassfish 3上的一个应用程序从JEE5和Weblogic 10迁移到JEE6。它过去在旧环境中运行良好,无需任何特殊设置。现在Glassfish将传递给另一个EAR中的类的BE的所有值“为空”


如果我把所有的罐子和战争都装在一只耳朵里,它运行得很好,但是我松开了预期的包装结构。我希望有一种方法可以避免移除两个组件的底层耦合。

您可以将您的实体打包到一个实用程序jar中,并让两个耳朵都将这个jar包含在它们的lib文件夹中

对于每个persistence.xml,可以使用
元素来包含实体

比如说

 <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="xxx">
        <provider>org.hibernate.ejb.HibernatePersistence</provider> 
        <jta-data-source>xxx</jta-data-source>      
        <mapping-file>META-INF/orm.xml</mapping-file>
        <jar-file>lib/entities.jar</jar-file>       

        <properties>
            xxx
    </persistence-unit>
</persistence>

org.hibernate.ejb.HibernatePersistence
xxx
META-INF/orm.xml
lib/entities.jar
xxx
之后,您可以使用远程ejb查找来传递实体

我不确定我是否会建议这样做。。您需要共享确切的实体吗?你不能使用dto并将持久性的责任委托给一个应用程序吗


希望有帮助

我会告诉你我有几个项目的项目结构。War和EJB模块由所有人共享

首先:必须创建一个项目库,在其中声明EJB远程接口和实用程序类(例如:clintLib.jar)

second:在EJB模块中,必须将clientLib.jar用作lib。在那里添加您的实体

third:在war模块中,必须将clientLib.jar用作lib


这样,您就可以通过clientLib.jar中声明的远程接口从任何war访问EJB模块。EJB容器将提供使用transparent-to-you访问查找EJB实例的权限。我的应用程序结构是:3war1library项目1ejb项目

谢谢你的提示。遗憾的是,这对我不起作用。你建议一个更好的设计当然是对的:)我只是希望有一个简单的方法。我不是试图在一只耳朵里分享罐子和战争,而是在两个分开的耳朵之间。