2009-10-06 16 views
7

Ho un oggetto complesso che viene gestito dalla gestione dei dati di LCDS DataServices e che viene creato/aggiornato ecc. Utilizzando assemblatori personalizzati. La stragrande maggioranza della gerarchia degli oggetti viene serializzata/deserializzata correttamente, ma ho riscontrato uno scoglio quando si tratta di serializzare classi java immutabili.Serializzazione di classi java immutabili all'actioncript con LCDS

In un java unico mondo Vorrei utilizzare il writeReplace Java e metodi readResolve come questo ottimo blog descrive: http://lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/

Ecco come ho originariamente scritto la mia classe Java, aspettandosi LiveCycle per chiamare il metodo writeReplace e debitamente sostituire il classe immutabile con una mutabile per la serializzazione. Tuttavia, sembra che lcds non sappia nulla del metodo writeReplace e chiamerà solo readExternal/writeExternal ignorando readResolve e writeReplace.

In primo luogo, altre persone hanno trovato questo caso o mi manca qualcosa?

In secondo luogo, qualcuno ha escogitato un metodo appropriato per deserializzare le classi di actionscript in oggetti immutabili o singleton?

Molte grazie

risposta

5

Sì, è un problema comune. Adobe consiglia che il tipo Java con proprietà immutabili implementa Externalizable e il tipo ActionScript equivalente implementa IExternalizable.

+0

Grazie Graeme. Sono arrivato alla stessa conclusione. Non credo che tu sia a conoscenza di piani per writeReplace e readResolve per essere gestiti correttamente da LCDS in futuro, vero? –

2

non esiste un piano per gestire la writeReplace e readResolve, ma si può chiedere una richiesta di funzionalità http://bugs.adobe.com/jira/browse/BLZ

Nell'attuare il tuo serializzazione personalizzata prendersi cura che si perderanno alcuni vantaggi come la compressione numeri e identificare stringhe duplicate. Un'idea è di dare un'occhiata al meccanismo di serializzazione attuale e di modificarlo di conseguenza.

Tuttavia, se siete interessati solo a serializzare le uniche proprietà leggere questo miglioramento è stato implementato nel BlazeDS, date un'occhiata qui: http://bugs.adobe.com/jira/browse/BLZ-427