Come posso eseguire il debug di AMF (BlazeDS) serializzazione degli oggetti Java a Actionscript?
-
13-09-2019 - |
Domanda
sto usando BlazeDS a distanza alcuni oggetti Java che sto consumando in un'applicazione Flex. Sto ottenendo un errore di coercizione tipo con una delle mie classi che non posso per la vita di me a capire. Ho altre classi che stanno lavorando bene usando gli stessi tipi di dati, e ho superato il mio mappare una dozzina di volte. Sto seguendo tutte le convenzioni necessarie per getter e setter per quanto ne so ...
In ogni caso, la mia domanda è: come posso eseguire il debug di questo problema in esecuzione App Flex in modalità debug sputa fuori alcuni errori generici alla console che in realtà non aiutano molto (TypeError: Error # 1034: Tipo coercizione non riuscita: impossibile convertire oggetto @ 5d1d809 a valueObjects.SomeClass)
..Sono nuovo di questa cosa AMF / Flex + Java, quindi qualche consiglio sarebbe molto apprezzato.
Soluzione
Questi sono due degli strumenti che uso quando si lavora con BlazeDS, AMF, ecc.
- Utilizzare uno strumento proxy HTTP che mostra le chiamate tra il client e il server, come Charles
Charles è un proxy HTTP / HTTP monitor / Reverse Proxy che consente un sviluppatore di visualizzare tutto il HTTP e SSL / HTTPS traffico tra loro macchine e Internet. Questo include le richieste, le risposte e la intestazioni HTTP (che contengono la cookie e le informazioni cache).
-
Attiva la registrazione per BlazeDS . All'interno
WEB-INF/conf/services-conf.xml
, abbassare il livello di debug a 'debug
' come nella snippit di seguito. L'uscita, che è abbastanza dettagliato, apparirà{tomcat-home}/logs/localhost.yyyy-mm-dd.log
<
target class="flex.messaging.log.ConsoleTarget" level="debug"
>
Altri suggerimenti
Il modo più semplice per controllare la comunicazione tra di servizio-clienti messaggi di AMF è di usare Firefox, installare FireBug estensione e aggiungere il AMF Explorer . È possibile vedere le richieste e le risposte strutturate.
La classe Java che viene deserializzare sul lato client deve avere un riferimento a un oggetto della classe AS3 corrispondente all'applicazione (mxml o AS3). In caso contrario, la classe AS3 non verrà caricato nel file SWF e si tradurrà in deserializzazione la classe Java a un oggetto AS3 generico.
aggiornamento Questo accadrà pur avendo la mappatura, getter e setter. Basta dichiarare un oggetto della classe AS3 corrispondente nella sezione dello script del vostro MXML.
I utilizzare Flex Builder e lo hanno impostato per client e server il debug lato. E 'stato un dolore per impostare in un primo momento, ma è possibile Google per tutorial step-by-step. Lo trovo molto prezioso per il debug RPC. Ultima volta che ho controllato, Flex Builder ha una prova gratuita ed è libero di studenti e disoccupati.
E 'anche interessante notare che la strumentazione in Java può anche causare una perdita di informazioni e / o interferire con il processo di serializzazione e flusso.
Ho sperimentato questo TypeError: Error #1034: Type Coercion failed
su un progetto (Flex <-> BlazeDS + primavera) in cui è stato attuato il nostro strato di accesso ai dati con iBatis ed aveva lazy-carico acceso - abbiamo spenta come tale misura ha rappresentato la perdita minore di efficienza (in teoria, almeno), rispetto ad altre soluzioni alternative che abbiamo avuto in atto.