几个 EAR、JPA 和接口
Posted
技术标签:
【中文标题】几个 EAR、JPA 和接口【英文标题】:several EARs, JPA and interfaces 【发布时间】: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 尝试从 MyObject 的 app1.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 上
【问题讨论】:
【参考方案1】:在反序列化期间需要 impl 类。如果您不想公开 impl 类,另一种方法是使用 XML 或 JSON 或 protobuff。
【讨论】:
我主要关心的是隐藏 JPA 注释。是否有可能:MyObjectImpl 实现 MyObject,MyObjectJPA 扩展(只是注释)MyObjectImpl,让其他耳朵可以使用 MyObject 和 MyObjectImpl?容器会将 MyObjectJPA 反序列化为 MyObjectImpl 吗?不敢相信没有办法向客户隐藏 JPA 注释。以上是关于几个 EAR、JPA 和接口的主要内容,如果未能解决你的问题,请参考以下文章
java web spring jpa 在以接口为dao的方法里使用原生sql,联合查找没有对应实体,用啥来接收? 求大神
springData__jpa对数据库进行操作---dao接口和 测试类