知识卡片
序列化失败的根因是项目管理疏漏而非技术缺陷
内容
通过RMI远程传输的值对象(VO)必须实现Serializable接口才能序列化。若客户端把某属性权限 从private改为public,服务端未同步更新VO定义,会导致序列化失败——这不是技术缺陷,而是 两端代码未同步的项目协作问题。发散:遇到序列化类故障,先检查两端契约版本是否同步,往往 比深挖框架本身更快定位根因。
参考来源
- 位置:《设计模式之禅(第2版)》第5章《迪米特法则》(源文件:_epub-src/text/part0020.html)
- 结论依据:原文举RMI传输VO对象、客户端修改属性访问权限但服务端未同步更新导致序列化失败的例子,明确指出"这个问题的产生应该属于项目管理范畴……难道不是项目管理的失职吗",将根因归为协作流程而非技术本身。
- 原始内容:客户端的VO修改了一个属性的访问权限,从private变更为public,访问权限扩大了,如果服务器上没有做出相应的变更,就会报序列化失败……这个问题的产生应该属于项目管理范畴,一个类或接口在客户端已经变更了,而服务器端却没有同步更新,难道不是项目管理的失职吗?