2009-08-18 506 views
2

我們一直在使用Spring Remoting進行項目。它與其他一些系統一起使用來訪問我們的Web服務。我們目前正在根據Web服務的參數進行演變;但與此同時,我們正試圖獨立於消費者。Spring Remoting序列化和反序列化

所以,目前我的問題是如何序列化和反序列化在春季遠程處理工作。下面是詳細信息:

我必須通過已在一類以下參數春天遠程暴露web服務

  1. 年齡
  2. 地址

目前所有消費者使用相應的存根,並相應地發生序列化和反序列化。

正如我所說,我們發展我們的Web服務和類分別包含以下字段現在」

  1. 年齡
  2. 地址
  3. 國家
  4. 出生日期

然而,消費者仍然有舊的存根或rathe r stub-jar來訪問Web服務。我們做了一次高峯,看起來無論在我們結束時新增加的字段,遠程服務都能繼續正常工作。自從添加了一些字段以來,我一直在期待它能夠在消費者的頭上進行炸彈爆炸。 「請注意,任何領域都沒有刪除/從課堂上刪除」。只有增加了。

彈簧遠程處理是否優雅地處理額外的字段,或者我應該期望它的嬰兒牀?

讓我知道我的問題在任何時候都不清楚。我試圖提出的最終問題是,我是否應該期待我的計劃進行轟炸?而且目前沒有失敗,因爲我沒有正確測試某些東西? spring remoting如何序列化和反序列化正在交換的對象?

+0

這與Spring沒有任何關係,它是一個普通的java.io序列化問題。 – skaffman 2009-08-18 11:06:33

+0

Spring負責序列化和反序列化。我不確定,如果spring在java提供的東西上做了什麼,或者它只是調用基本的java東西。 我只是想澄清一點。 – Priyank 2009-08-18 11:10:33

+0

不,Spring不會處理序列化,它使用JRE提供的序列化功能。 – skaffman 2009-08-18 11:18:01

回答

1

Spring序列化服從Java序列化的規則。

確認更改確實影響了serialVersionUID,並且您沒有自己提供一個未更改的更改。

+0

謝謝。我確實保持了serialVersionUID不變,這清楚地解釋了爲什麼我的遠程存根和類繼續工作。 乾杯 – Priyank 2009-08-19 07:28:19

1

我以爲Spring remoting基於HTTP,而不是Java序列化。如果是這種情況,那麼這些參數是名稱/值對,只要您沒有拿走現有客戶期望它應該繼續工作的參數。

請檢查此,skaffman。你對Spring的知識非常好,現在我正在度假。如果我在朋友的計算機上停留更長時間並研究這個話題,我會很無禮。對不起,我不能更有幫助。

+4

Spring的HTTP調用器仍然使用底部的標準Java序列化。由於我需要修復在OSGi中使用的反序列化,所以我一直在深究。 – SteveD 2009-08-18 19:17:07

+0

這是正確的,Spring的HttpInvoker通過HTTP傳輸提供java序列化的對象。 – skaffman 2009-08-18 20:14:56

+0

謝謝你們所有的輸入。它確實指出了我的正確方向。 – Priyank 2009-08-19 07:27:39