2009-08-18 122 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