簡體   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