使用LCDS将不可变java类序列化为actionscript

我有一个复杂的对象,由LCDS DataServices数据管理管理,并使用自定义汇编程序创建/更新等。 绝大多数对象层次结构正在被正确地序列化/反序列化,但在序列化不可变的java类时,我遇到了绊脚石。

在一个只有java的世界里,我会使用java writeReplace和readResolve方法,因为这篇优秀的博客描述了这个: http : //lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/

这就是我最初编写java类的方法,期望livecycle调用writeReplace方法并适当地用可变类替换不可变类以进行序列化。 然而,似乎lcds对writeReplace方法一无所知,只会调用readExternal / writeExternal而忽略readResolve和writeReplace。

首先,让其他人发现这种情况,或者我错过了什么?

其次,有没有人想出一个适当的方法来将actionscript类反序列化为不可变对象或单例?

非常感谢

是的,这是一个常见的问题。 Adobe建议具有不可变属性的Java类型实现Externalizable,并且等效的ActionScript类型实现IExternalizable。

没有计划处理writeReplace和readResolve,但您可以要求提供function请求http://bugs.adobe.com/jira/browse/BLZ

实现自定义序列化时,请注意您将失去一些好处,如压缩数字和识别重复的字符串。 一个想法是查看实际的序列化机制并相应地进行修改。

但是,如果您只是对序列化只读属性感兴趣,则此增强function已在BlazeDS中实现,请查看此处: http : //bugs.adobe.com/jira/browse/BLZ-427

我发现最短最全面的答案: http : //expertdevelopers.blogspot.com/2010/07/serializable-vs-externalizable.html