Wie kann ich die AMF (BlazeDS) -Serialisierung von Java-Objekten nach Actionscript debuggen?

7

Ich verwende BlazeDS, um einige Java-Objekte zu entfernen, die ich in einer Flex-Anwendung verwende. Ich bekomme eine Art Zwangsstörung mit einer meiner Klassen, die ich nicht für mein Leben herausfinden kann. Ich habe andere Klassen, die mit den gleichen Datentypen funktionieren, und ich bin ein Dutzend Mal über meine Zuordnung gegangen. Soweit ich weiß, befolge ich alle notwendigen Konventionen für Getter und Setter ...

Wie auch immer, meine Frage lautet: Wie kann ich dieses Problem beheben? Beim Ausführen der Flex-App im Debug-Modus werden einige allgemeine Fehler an der Konsole ausgegeben, die nicht wirklich helfen (TypeError: Error # 1034: Type Coercion failed: Objekt @ 5d1d809 kann nicht in valueObjects.SomeClass konvertiert werden.).

Ich bin neu in dieser ganzen AMF / Flex + Java Sache, also würden alle Tipps sehr geschätzt werden.

    
Boden 11.06.2009, 06:24
quelle

5 Antworten

13

Dies sind zwei der Werkzeuge, die ich bei der Arbeit mit BlazeDS, AMF usw. verwende.

  • Verwenden Sie ein HTTP-Proxy-Tool , das die Aufrufe zwischen Ihrem Client und Server anzeigt, z. B. Charles >
  

Charles ist ein HTTP-Proxy / HTTP   Monitor / Reverse Proxy, der a   Entwickler, um alle HTTP und   SSL / HTTPS-Verkehr zwischen ihren   Maschine und das Internet. Dies   enthält Anfragen, Antworten und die   HTTP - Header (die den   Cookies und Caching-Informationen).

  • Schalte die Protokollierung für BlazeDS ein . Verringern Sie in WEB-INF/conf/services-conf.xml die Debugging-Ebene auf " debug " wie im folgenden Snippit. Die Ausgabe, die ziemlich detailliert ist, erscheint in {tomcat-home}/logs/localhost.yyyy-mm-dd.log

    & lt; target class="flex.messaging.log.ConsoleTarget" level="debug" & gt;

Stu Thompson 11.06.2009, 06:36
quelle
4

Am einfachsten können Sie die Kommunikation zwischen AMF-Service-Clients überprüfen, indem Sie FireFox verwenden, die Erweiterung FireBug installieren und das AMF-Explorer . Sie können die strukturierten Anfragen und Antworten sehen.

    
FidelGonzo 31.01.2011 11:25
quelle
2

Die Java-Klasse, die auf der Clientseite deserialisiert wird, muss einen Verweis auf ein Objekt der entsprechenden AS3-Klasse in der Anwendung haben (mxml oder as3). Andernfalls wird die Klasse as3 nicht in die SWF-Datei geladen und führt dazu, dass die Java-Klasse zu einem generischen as3-Objekt deserialisiert wird.

aktualisiert Dies wird trotz der Zuordnung, Getter und Setter passieren. Deklarieren Sie einfach ein Objekt der entsprechenden AS3-Klasse im Skriptabschnitt Ihres mxml.

    
Rivet 14.07.2010 18:04
quelle
0

Ich verwende Flex Builder und lasse es sowohl für das Client- als auch für das Serverseitige Debugging einrichten. Es war ein Schmerz, zuerst einzurichten, aber Sie können Google für Schritt-für-Schritt-Anleitungen. Ich finde es sehr nützlich für das Debugging von RPCs. Zuletzt habe ich überprüft, Flex Builder hat eine kostenlose Testversion und ist kostenlos für Studenten und Arbeitslose.

    
Philip 18.06.2009 09:18
quelle
0

Es ist auch erwähnenswert, dass die Instrumentierung in Java auch einen Informationsverlust verursachen und / oder den Serialisierungsprozess und -strom stören kann.

Ich habe dieses TypeError: Error #1034: Type Coercion failed in einem Projekt (Flex & lt; - & gt; BlazeDS + Spring) erlebt, wo unsere Datenzugriffsschicht mit iBatis implementiert wurde und Lazy-Loading eingeschaltet war - wir haben es ausgeschaltet, wie diese Maßnahme darstellt der geringere Effizienzverlust (theoretisch zumindest) im Vergleich zu anderen Workarounds, die wir hatten.

    
Darren Bishop 25.03.2011 15:59
quelle

Tags und Links