【问题标题】:several EARs, JPA and interfaces几个 EAR、JPA 和接口
【发布时间】:2010-11-15 13:59:13
【问题描述】:

我有工作app1.ear,包含:

  • JPA 实体,MyObjectImpl,从 api.jar 实现接口 MyObject
  • api.jar 带有 MyObject 接口和 EJB Remote 接口
  • ejb.jar,带有 EJB,提供访问和修改 JPA 实体的方法

第二个 app2.ear 应该只使用 api.jar 中的接口与 app1.ear 通信。在耳朵之间传递 Java 基本类型时,一切正常。 但是,当 app2.ear 尝试从 MyObjectapp1.ear 实例中检索时,会引发 CORBA MARSHAL 异常,即 MyObjectImpl 找不到类:

"IOP00810257: (MARSHAL) Could not load class com.zzz.MyObjectImpl"

app2.ear 中放置 MyObjectImpl 可以解决问题,但我不想将 JPA 实现暴露给其他 ear 应用程序。 我错过了什么或者我的方法是错误的?请告知要做什么或在哪里挖掘。 非常感谢!

PS:服务器 GF 3.0.1,没有特定于 GF 的部署描述符,两个耳朵都运行在同一个 JVM 上

【问题讨论】:

    标签: jpa ejb marshalling corba ear


    【解决方案1】:

    在反序列化期间需要 impl 类。如果您不想公开 impl 类,另一种方法是使用 XML 或 JSON 或 protobuff。

    【讨论】:

    • 我主要关心的是隐藏 JPA 注释。是否有可能:MyObjectImpl 实现 MyObject,MyObjectJPA 扩展(只是注释)MyObjectImpl,让其他耳朵可以使用 MyObject 和 MyObjectImpl?容器会将 MyObjectJPA 反序列化为 MyObjectImpl 吗?不敢相信没有办法向客户隐藏 JPA 注释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2013-08-29
    • 2012-02-16
    • 2016-09-08
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多