1

我有工作app1.ear,包含:

  • JPA 实体MyObjectImpl ,从api.jar实现接口MyObject
  • 带有MyObject接口和 EJB Remote 接口的api.jar
  • 带有 EJB 的ejb.jar,提供访问和修改 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"

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

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

4

1 回答 1

1

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

于 2010-11-15T14:18:41.913 回答