【问题标题】:Sharing (JPA) Business Entities across EARs on a glassfish server在 glassfish 服务器上跨 EAR 共享 (JPA) 业务实体
【发布时间】:2014-10-24 18:22:55
【问题描述】:

我在 glassfish 3.1.2 实例中部署了多个 EAR。我希望能够将 EAR A 中的一个类的 BE 移交给 EAR B 中的一个类——这意味着 B 类可以更新 BE。

这甚至可能吗?如何配置persistence.xmls 来完成这项工作?

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

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

如果我将所有 jars 和 wars 打包在一个 EAR 中,它运行良好,但我失去了预期的打包结构。我希望有一种方法可以不移除两个组件的底层耦合。

【问题讨论】:

    标签: jakarta-ee jpa glassfish java-ee-6 glassfish-3


    【解决方案1】:

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

    对于每个 persistence.xml,您可以使用 <jar-file> 元素来包含实体。

    例如

     <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>
    

    之后,您可以使用远程 ejb 查找来传递实体。

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

    希望对你有帮助!

    【讨论】:

    • 感谢您的提示。可悲的是,这对我不起作用。您建议更好的设计当然是对的 :) 我只是希望有一个简单的出路。
    【解决方案2】:

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

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

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

    第三个:在你的war模块中你必须使用clientLib.jar作为lib。

    这样,您可以通过在 clientLib.jar 中声明的远程接口从任何战争中访问您的 EJB 模块。 EJB 容器将使用对您透明的方式提供对查找 EJB 实例的访问。我的应用程序结构是:3 战争 1 库项目 1 EJB 项目

    【讨论】:

    • 我不是想在一只耳朵里的罐子和战争之间分享,而是在两只不同的耳朵之间分享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多