【问题标题】:Spring Remoting Serialization and De-serializationSpring Remoting 序列化和反序列化
【发布时间】:2009-08-18 11:02:33
【问题描述】:

一段时间以来,我们一直在项目中使用 Spring Remoting。它与其他一些系统一起使用以访问我们的网络服务。我们目前正在根据 Web 服务采用的参数进行改进;但与此同时,我们正努力独立于我们的消费者。

所以,目前我的问题是关于序列化和反序列化如何在春季远程处理中工作。以下是详细信息:

我有一个通过 spring 远程处理暴露的 web 服务,它在一个类中有以下参数

  1. 姓名
  2. 年龄
  3. 地址

目前所有消费者都使用各自的存根,并相应地进行序列化和反序列化。

正如我所提到的,我们现在分别改进了 Web 服务和类以包含以下字段”

  1. 姓名
  2. 年龄
  3. 地址
  4. 国家
  5. 出生日期

但是,消费者仍然有旧的存根或存根 jar 来访问 Web 服务。我们做了一个峰值,似乎无论我们端新添加的字段如何,远程服务都可以继续正常工作。由于添加了字段数量,我期待它会在消费者端轰炸。 “请注意没有字段被从类中删除/删除”。只是做了一些补充。

spring 远程处理是否可以优雅地处理其他字段,或者我应该期望它可以实现?

如果我的问题在任何时候不清楚,请告诉我。我试图提出的最终问题是,我是否应该期待我的程序被炸毁?它目前没有失败,因为我没有正确测试一些东西? spring remoting 如何序列化和反序列化正在交换的对象?

【问题讨论】:

  • 这其实和Spring没什么关系,就是一个普通的java.io序列化问题。
  • Spring 负责序列化和反序列化。我不确定,如果 spring 在 java 提供的东西之上做了什么,或者它只是调用了基本的 java 东西。我也想明确一点。
  • 不,Spring 不负责序列化,它使用 JRE 提供的序列化功能。

标签: java spring serialization spring-remoting


【解决方案1】:

Spring 序列化遵循 Java 序列化的规则。

验证更改确实影响了serialVersionUID,并且您自己没有提供一个,这并没有改变。

【讨论】:

  • 谢谢。我确实保持 serialVersionUID 不变,这清楚地解释了为什么我的远程处理存根和类仍然可以继续工作。干杯
【解决方案2】:

我认为 Spring 远程处理基于 HTTP,而不是 Java 序列化。如果是这种情况,这些是参数名称/值对,只要您没有删除现有客户期望它应该继续工作的参数。

请检查一下,skaffman。你对春天的了解非常好,我现在正在度假。如果我在朋友的电脑上停留更长时间并研究这个话题,我会很不礼貌。抱歉,我不能提供更多帮助。

【讨论】:

  • Spring 的 HTTP 调用器在底部仍然使用标准的 Java 序列化。因为我需要修复反序列化以在 OSGi 中使用,所以我一直深陷其中。
  • 这是正确的,Spring 的 HttpInvoker 通过 HTTP 传输传递 java 序列化的对象。
  • 感谢大家的投入。它确实为我指明了正确的方向。
猜你喜欢
  • 2015-07-11
  • 2019-04-03
  • 2015-09-01
  • 2012-03-17
  • 2013-04-19
  • 2018-12-05
相关资源
最近更新 更多