Comment puis-je debug de l'AMF (BlazeDS) la sérialisation des objets Java à Actionscript?
Je suis en utilisant BlazeDS à distance certains objets Java que je suis consommant dans une application Flex. J'ai une contrainte de type d'erreur avec l'un de mes cours 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 j'ai dépassé ma cartographie d'une douzaine de fois. Je suis en suivant toutes les conventions pour les getters et setters pour autant que je sais...
De toute façon, ma question est: comment puis-je déboguer ce problème? L'exécution de l'Flex application en mode debug crache quelques erreurs génériques pour la console n'a pas vraiment d'une grande aide (TypeError: Error #1034: Contrainte de Type échec: impossible de convertir l'Objet@5d1d809 à valueObjects.SomeClass.).
Je suis nouveau à tout ce AMF /Flex + Java chose, de sorte que toute les conseils seraient grandement appréciés.
OriginalL'auteur Boden | 2009-06-11
Vous devez vous connecter pour publier un commentaire.
Ces deux outils que j'utilise lorsque l'on travaille avec BlazeDS, AMF, etc.:
Activer l'enregistrement de BlazeDS. Dans
WEB-INF/conf/services-conf.xml
, de baisser le niveau de débogage à 'debug
', comme dans la ci-dessous snippit. La sortie, qui est assez détaillé, apparaîtra dans{tomcat-home}/logs/localhost.yyyy-mm-dd.log
<
target class="flex.messaging.log.ConsoleTarget" level="debug"
>Je voudrais vérifier pour voir si vous êtes "liaison" correctement, avec un vraiment 1:1 Java:AS3 des objets, des types de données compatibles et l'utilisation correcte de "[Bindable]" et "[RemoteClass(alias="com.mycorp.myproj.vo.Utilisateur")]" AS3 fonctionnalités de liaison. Il y a beaucoup d'exemples dans le googlenets.
Mes types sont ok, ma télécommande classe alias sont corrects, et j'ai expérimenté avec Bindable. J'ai utilisé Charles par votre suggestion et tout est de retour à partir du serveur à la recherche great....class noms, types de données, tout. Si je pouvais juste voir la raison spécifique que la contrainte est défaut que je pourrais être capable de le comprendre...mais pour l'instant j'ai l'impression d'être aveugle.
Ok, c'était un problème de liaison comme vous soupçonne. J'ai été le marquage de mes objets de valeur que peut être liée et bien que cela a fonctionné pour certains, il n'a pas de travail pour tous. J'ai trouvé une vidéo sur la liaison en flex et je suis sur le point de le regarder pour voir si je peux obtenir une meilleure compréhension de ce genre de choses. Merci encore!
PS - je vais accepter cette réponse parce que l'original de votre réponse a bien répondu à ma question d'origine (bien que des suggestions pour voir ce qui se passe dans le client un peu mieux serait génial.)
OriginalL'auteur Stu Thompson
La façon la plus simple pour vérifier la communication entre le service-clients de l'AMF messages est d'utiliser FireFox, installer FireBug extension et ajouter le AMF Explorer. Vous pouvez voir le structurée les demandes et les réponses.
OriginalL'auteur FidelGonzo
La classe java qui est désérialisé chez le client doit disposer d'une référence à un objet de la correspondante AS3 classe de l'application (mxml ou as3). Sinon, l'as3 classe ne sera pas chargé dans le fichier swf et le résultat sera la désérialisation de la classe java à un générique as3 objet.
mis à jourCe qui va arriver malgré la cartographie, les getters et les setters. Il suffit de déclarer un objet de la correspondante AS3 classe dans la section script de votre mxml.
main.mxml
, je viens de l'ajouterprivate const myVO:MyVO = null;
et j'ai travaillé, je vous remercie.OriginalL'auteur Rivet
- Je utiliser Flex Builder et l'ont mis en place pour à la fois côté client et serveur de débogage. C'était une douleur à définir au premier abord, mais vous pouvez Google pour l'étape par étape tutoriels. Je trouve ça assez utile pour le débogage des Rpc. Dernière, j'ai vérifié, Flex Builder a un essai gratuit et est gratuit pour les étudiants et les chômeurs.
OriginalL'auteur Philip
Il est également intéressant de noter que l'instrumentation en Java peut aussi provoquer une perte d'information et/ou d'interférer avec le processus de sérialisation et de flux.
J'ai connu ce
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 différé activé - nous avons éteint que cette mesure a représenté la moindre perte d'efficacité (théoriquement au moins), par rapport à d'autres solutions de contournement que nous avait mis en place.OriginalL'auteur Darren Bishop