繁体   English   中英

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

[英]Extended a Serializable Class, how to use in Remote-Calls?

这是我的情况:

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

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

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

我是否必须通过基本上复制除新字段以外的所有字段来从扩展对象中手动创建未扩展的Bean对象? 还是有更好/更简便的方法来做到这一点? 覆盖序列化方法不是一种选择,因为如上所述,我仍然需要本地对象也可以正常地序列化。

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

除非您的服务器可以通过类路径中的jar来了解您的专业类,否则您将无法使它反序列化您的类。

创建代理可能是一个探索角度,但不能保证这会起作用(有关您的具体情况的详细信息不足)。

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

除非映射中的Serializable对象之一对服务器未知,否则服务器不会对其进行反序列化。 该方法允许您在其中添加任何额外的bean信息,服务器将始终知道如何处理它。

您还可以尝试更棘手的角度。 类Class可自行序列化。 因此,如果在转移bean之前转移了它,则服务器可能首先可以了解它。 我自己从来没有尝试过,所以不知道是否可行。 只是一个主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM