Question

J'ai un objet complexe qui est géré par la LCDS Dataservices gestion des données et en cours de création / mise à jour en utilisant etc assembleurs personnalisés. La grande majorité de la hiérarchie d'objets est correctement sérialisé / désérialisé mais je l'ai touché une pierre d'achoppement en matière de sérialisation classes Java immuables.

Dans un seul monde java j'utiliser le writeReplace java et les méthodes readResolve comme cet excellent décrit blog: http://lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/

Voici comment j'ai écrit ma classe java, attendant livecycle à appeler la méthode writeReplace et remplacer régulièrement la classe immuable avec un mutable pour la sérialisation. Cependant, il semblerait que rien LCDs connaît la méthode de writeReplace et n'appeler readExternal / writeExternal ignorant readResolve et writeReplace.

Tout d'abord, ont d'autres personnes ont trouvé que ce soit le cas, ou suis-je manque quelque chose?

En second lieu, quelqu'un at-il mis au point une méthode appropriée pour désérialiser les classes actionscript en soit des objets immuables ou singletons?

Merci

Était-ce utile?

La solution

Oui, il est un problème commun. Adobe recommande que le type Java qui a des propriétés immuables implémente Externalizable et l'équivalent de type ActionScript implémente IExternalizable.

Autres conseils

Il n'y a pas de plan pour gérer la writeReplace et readResolve, mais vous pouvez demander une demande fonctionnalité http://bugs.adobe.com/jira/browse/BLZ

Lors de la mise en œuvre de votre prendre soin de sérialisation personnalisé que vous perdrez certains avantages comme la compression des nombres et identifier les chaînes en double. Une idée est de jeter un oeil sur le mécanisme de sérialisation réelle et de le modifier en conséquence.

Cependant, si vous êtes intéressé juste sérialisation les propriétés en lecture seule cette amélioration a été mis en œuvre dans les BlazeDS, jetez un coup d'oeil ici: http://bugs.adobe.com/jira/browse/BLZ-427

réponse la plus courte et la plus complète que j'ai trouvé: http: // expertdevelopers. blogspot.com/2010/07/serializable-vs-externalizable.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top