Java 扩展了可序列化类,如何在远程调用中使用?

Java 扩展了可序列化类,如何在远程调用中使用?,java,javabeans,serializable,Java,Javabeans,Serializable,我的情况如下: 我有一个服务器应用程序,它提供了一个远程接口,使用bean对象作为调用参数/返回值。这些当然是可序列化的。比如,一个在外科工作的医生 对于我的本地应用程序,我扩展了这些调用对象:例如,医生有一个额外的密码字段,因此医生的密码可以存储在本地。现在我的本地对象也是可序列化的,我也使用它通过本地网络发送这些对象 现在对我来说,在对服务器的远程调用中使用扩展实现的对象最简单的方法是什么?服务器显然无法重建我的序列化实现,因为他不知道我的专用类 我是否必须通过复制除新字段之外的所有字段,从

我的情况如下:

我有一个服务器应用程序,它提供了一个远程接口,使用bean对象作为调用参数/返回值。这些当然是可序列化的。比如,一个在外科工作的医生

对于我的本地应用程序,我扩展了这些调用对象:例如,医生有一个额外的密码字段,因此医生的密码可以存储在本地。现在我的本地对象也是可序列化的,我也使用它通过本地网络发送这些对象

现在对我来说,在对服务器的远程调用中使用扩展实现的对象最简单的方法是什么?服务器显然无法重建我的序列化实现,因为他不知道我的专用类

我是否必须通过复制除新字段之外的所有字段,从扩展的bean对象手动创建一个未扩展的bean对象?或者有没有更好/更简单的方法?覆盖序列化方法不是一个选项,因为正如我上面所说的,我仍然需要本地对象也可以正常序列化

服务器显然无法重建 我的序列化实现,因为 他不知道我的专业知识 上课

除非您的服务器可以通过类路径中的jar了解您的专用类,否则您将无法让它取消您的类的序列化

创造可以是一个探索的角度,但不能保证这会奏效(没有足够的细节来描述你的具体情况)

一个更简单的解决方案是为bean使用一个根类,包含或扩展一个哈希映射,并在其中存储属性/值。与其为每个属性创建getter和setter,不如只实现一对,并将属性名称作为字符串提供

除非映射中的一个可序列化对象对服务器未知,否则服务器取消序列化不会有任何问题。此方法允许您在其中添加任何额外的bean信息,服务器将始终知道如何处理它


还有一个更棘手的角度,你可以试试。该类本身是可序列化的。因此,如果您在传输bean之前传输了它,那么服务器可能会首先了解它。我自己从来没有试过,所以我不知道它是否有效。只是一个想法。

代理看起来不适合这样做。关于散列映射属性:重点是,在专用版本中,这些信息中的一些应该是私有的,根本不应该在远程调用中传输。这不仅仅是服务器无法重建对象的问题。我想我会坚持使用一组export()方法,将每个对象克隆到其各自的超级类型的实例中。