Сериализация неизменяемых классов Java для ActionScript с LCDS

У меня есть сложный объект, которым управляет управление данными LCDS DataServices и создается/обновляется и т.д., используя пользовательские ассемблеры. Подавляющее большинство иерархии объектов сериализуется/десериализовано правильно, но я попал в камнем преткновения, когда дело доходит до сериализации неизменяемых классов Java.

В java только мире я бы использовал java writeReplace и readResolve, так как этот отличный блог описывает: http://lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/

Вот как я изначально написал свой класс java, ожидая, что жизненный цикл вызовет метод writeReplace и должным образом заменит неизменяемый класс на изменчивый для сериализации. Однако, похоже, что lcds ничего не знают о методе writeReplace и будут вызывать только readExternal/writeExternal, игнорируя readResolve и writeReplace.

Во-первых, если другие считают, что это так, или я что-то упускаю?

Во-вторых, кто-нибудь придумал подходящий метод для десериализации классов ActionScript либо в неизменяемых объектах, либо в одиночных точках?

Большое спасибо

Ответ 1

Да, это общая проблема. Adobe рекомендует, чтобы тип Java, который имеет неизменные свойства, реализует Externalizable, а эквивалентный тип ActionScript реализует IExternalizable.

Ответ 2

Нет плана обработки writeReplace и readResolve, но вы можете запросить запрос функции http://bugs.adobe.com/jira/browse/BLZ

При реализации вашей пользовательской сериализации заботитесь о том, что вы потеряете некоторые преимущества, такие как сжатие чисел и идентификация повторяющихся строк. Одна из идей - взглянуть на реальный механизм сериализации и соответствующим образом изменить его.

Однако, если вам интересно только сериализовать свойства только для чтения, это усовершенствование было реализовано в BlazeDS, посмотрите здесь: http://bugs.adobe.com/jira/browse/BLZ-427