2009-10-06 9 views
7

J'ai un objet complexe qui est géré par la gestion des données LCDS DataServices et en cours de création/mise à jour etc. à l'aide d'assembleurs personnalisés. La grande majorité de la hiérarchie d'objets est sérialisée/désérialisée correctement, mais j'ai rencontré une pierre d'achoppement quand il s'agit de sérialiser des classes java immuables.Sérialisation de classes java immuables en actionscript avec LCDS

Dans un java seul monde j'utiliser le writeReplace java et les méthodes readResolve comme cet excellent blog décrit: 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 dûment remplacer la classe immuable avec un mutable pour la sérialisation. Cependant, il semblerait que lcds ne connaisse rien de la méthode writeReplace et n'appellera que readExternal/writeExternal en ignorant readResolve et writeReplace.

D'abord, d'autres personnes ont-elles trouvé que c'était le cas, ou est-ce qu'il me manque quelque chose? D'autre part, quelqu'un a-t-il trouvé une méthode appropriée pour désérialiser les classes ActionScript en objets immuables ou en singletons?

Un grand merci

Répondre

5

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

+0

Merci Graeme. Je suis arrivé à la même conclusion. Je ne pense pas que vous êtes au courant de plans pour writeReplace et readResolve à gérer correctement par LCDS dans le futur êtes-vous? –

2

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

Lors de l'implémentation de prendre votre sérialisation personnalisé de soins que vous perdrez certains avantages comme la compression des nombres et identifier les chaînes en double. Une idée est de jeter un coup d'œil sur le mécanisme de sérialisation actuel et de le modifier en conséquence.

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

Questions connexes