2009-10-06 11 views
7

私はLCDS DataServicesデータ管理によって管理され、カスタムアセンブラを使用して作成/更新されている複雑なオブジェクトを持っています。オブジェクト階層の大部分は正しくシリアライズ/デシリアライズされていますが、不変のJavaクラスをシリアライズする際には苦戦しました。この優れたブログで説明するようにJavaでLCDSで不変のJavaクラスをActionScriptにシリアライズ

唯一の世界私は、JavaにwriteReplaceとはreadResolveメソッドを使用します。http://lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/

これは私が最初に私のJavaクラスを書いた方法で置き換える正式にwriteReplaceメソッドを呼び出すとするには、LiveCycleを期待し、直列化のための変更可能なクラスを持つ不変クラス。しかし、LCDはwriteReplaceメソッドを何も知らず、readResolveとwriteReplaceを無視してreadExternal/writeExternalを呼び出すだけです。

まず、他の人にこれが当てはまると感じたことがありますか、何か不足していますか?

第2に、誰かが、不変のオブジェクトまたはシングルトンにactionscriptクラスをデシリアライズする適切なメソッドを思いついていますか?

ありがとうございました

答えて

5

はい、よくある問題です。アドビは、不変プロパティを持つJavaタイプがExternalizableを実装し、同等のActionScriptタイプがIExternalizableを実装することを推奨します。

+0

おかげグレアムを。私は同じ結論に達しました。私はwriteReplaceとreadResolveの計画について、あなたが将来的にLCDSによって正しく処理されることを認識しているとは思いませんか? –

2

はにwriteReplaceとはreadResolveを処理する予定はありませんが、あなたは、機能要求http://bugs.adobe.com/jira/browse/BLZ

カスタムシリアライズは、あなたが数字を圧縮し、重複している文字列を特定するようないくつかの利点を失うことになる世話を実現するために求めることができます。 1つのアイデアは、実際のシリアル化メカニズムを見てそれに応じて変更することです。あなただけの読み取り専用のプロパティをシリアル化に興味を持っている場合

しかし、この拡張は、BlazeDSの中で実施された、ここで見てみましょう:私が見つけhttp://bugs.adobe.com/jira/browse/BLZ-427