Question

J'utilise BlazeDS à distance des objets Java que je suis consommateurs dans une application Flex. Je reçois une erreur de contrainte de type avec une de mes classes que je ne peux pas pour la vie de me comprendre. J'ai d'autres classes qui fonctionnent très bien en utilisant les mêmes types de données, et je suis allé sur ma cartographie une douzaine de fois. Je suis toutes les conventions nécessaires pour accesseurs pour autant que je sais ...

Quoi qu'il en soit, ma question est: comment puis-je déboguer ce problème Exécution de l'application Flex en mode débogage recrache quelques erreurs génériques à la console qui ne permet pas vraiment beaucoup (TypeError: Erreur # 1034: type Coercion a échoué: ne peut pas convertir l'objet @ 5d1d809 à valueObjects.SomeClass)

..

Je suis nouveau à cette toute chose AMF / Flex + Java, donc des conseils serait grandement apprécié.

Était-ce utile?

La solution

Ce sont deux des outils que j'utiliser lorsque vous travaillez avec BlazeDS, Autorité des marchés financiers, etc.

  • Utilisez un outil proxy HTTP qui affiche les appels entre votre client et le serveur, comme Charles
  

Charles est un proxy HTTP / HTTP   moniteur / proxy inverse qui permet à un   développeur pour afficher tous les protocoles HTTP et   le trafic SSL / HTTPS entre leur   machine et Internet. Cette   comprend des demandes, des réponses et la   en-têtes HTTP (qui contiennent le   les cookies et les informations en cache).

  • Activer la journalisation pour BlazeDS . Au sein WEB-INF/conf/services-conf.xml, abaisser le niveau de débogage pour « debug » comme dans le dessous snippit. La sortie, ce qui est assez détaillée, apparaît dans {tomcat-home}/logs/localhost.yyyy-mm-dd.log

    <target class="flex.messaging.log.ConsoleTarget" level="debug">

Autres conseils

La meilleure façon de vérifier la communication entre les services-clients messages AMF est d'utiliser FireFox, installer Firebug l'extension et ajoutez le AMF Explorateur . Vous pouvez voir les demandes structurées et réponses.

La classe Java qui est désérialisé dans le côté client doit avoir une référence à un objet de la classe AS3 correspondant à l'application (mxml ou AS3). Dans le cas contraire, la classe AS3 ne sera pas chargé dans le fichier swf et entraînera désérialisation la classe java à un objet générique AS3.

mise à jour Cela se produira malgré la mise en correspondance, accesseurs. Il suffit de déclarer un objet de la section classe AS3 correspondante script de votre MXML.

J'utiliser Flex Builder et avoir mis en place pour les deux débogage côté client et serveur. Il était une douleur à mettre en place au début, mais vous pouvez Google pour des tutoriels étape par étape. Je trouve très utile pour le débogage RPCs. Aux dernières nouvelles, Flex Builder a un essai gratuit et est gratuit pour les étudiants et les chômeurs.

Il est également intéressant de noter que l'instrumentation en Java peut également causer une perte d'information et / ou interférer avec le processus de sérialisation et cours d'eau.

Je l'ai vécu TypeError: Error #1034: Type Coercion failed sur un projet (Flex <-> BlazeDS + printemps) où notre couche d'accès aux données a été mis en œuvre avec iBatis et avait chargement paresseux en marche - nous avons tourné le tout comme cette mesure représentait la moindre perte d'efficacité (théoriquement, au moins), par rapport à d'autres solutions de contournement que nous avions en place.

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