Flash Builder 4 Débutant ? Découvrez Flex 4 et Adobe® Flash® Builder 4
15
nov
09

Flex BlazeDS – RPC Fault: faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'echoServiceDestination'"

Ce article explique comment résoudre un problème que vous pouvez avoir avec BlazeDS. Voici l'erreur exacte qui correspond à la propriété "fault" du FaultEvent:

Received fault: [RPC Fault faultString="[MessagingError message='Destination 'echoServiceDestination' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'echoServiceDestination'"]

Bien sûr, dans votre cas, le nom du service ne sera pas "echoServiceDestination". Cette erreur se produit quand vous essayer d'appeler une méthode d'un RemoteObject et vient en fait d'un problème de configuration. Voici un bout de code contenant le RemoteObject qui pose problème:

<mx:RemoteObject id="remoteObject"
 destination="echoServiceDestination"
 result="resultHandler(event);"
 fault="faultHandler(event);"/>

Comme le dit le détail de l'erreur, la destination voulue ne peut pas être accédée. Comme votre serveur applicatif ne la trouve pas, il va chercher un "fallback", c'est-à-dire une destination par défaut sur votre serveur.

Dans la plupart des cas, cela signifie que votre application n'as pas réussi à lire le fichier de configuration de services services-config.xml. Il n'arrive donc pas à trouver la route vers la destination que vous lui donnez.

Vérifiez vos paramètres de compilation

Même s'il y a d'autres manières de le faire, vous pouvez renseigner le chemin vers le fichier de configuration services-config.xml comme paramètre de compilation par l'option -services comme ceci:

-services "C:\blazeds\tomcat\webapps\samples\WEB-INF\flex\services-config.xml" -locale en_US

Définir le fichier de configuration des services dans l'application cliente

Au moment de la création du projet…

Si vous avez crée votre projet de 0, vous avez sûrement définit au moment de la création, le type de serveur applicatif (J2EE, Colfusion, PHP, …) ainsi que les différentes informations associées (Root Folder, Root Url et Context Root). Vérifiez que vous avez bien configuré ces options pour qu'elle pointe vers la bonne application BlazeDS. Pour voir un exemple de création de projet BlazeDS de 0, consultez ce tutorial:

Flex BlazeDS – Tutorial Application Java Remoting avec BlazeDS Turnkey

Si votre projet Flex avec serveur est déjà crée…

Si vous avez déjà crée votre application Flex configurée comme étant connectée à un serveur applicatif, vous pouvez toujours modifier ces paramètres dans les propriétés du projet. Clic Droit > Properties > Flex Server.

Si vous avez crée un projet Flex qui n'a pas été définit comme projet avec serveur…

Dans ce cas là, il vous faut transformer votre projet Adobe Flex classique en projet Flex avec serveur. (voir tutorial)

Si aucune destination par défaut n'est définie et que vous voulez taper sur des "destinations dynamiques", vous aurez aussi cette erreur. Voici comment la corriger.

Définir une destination par défaut (services-config.xml et remoting-config.xml)

Pour définir une destination par défaut, il faut éditer les fichiers services-config.xml et remoting-config.xml de BlazeDS situés dans le dossier /WEB-INF/flex. Dans le noeud "services" de services-config.xml et dans le noeud principal de remoting-config.xml, vous devriez avoir:

<default-channels>
 <channel ref="my-amf"/>
</default-channels>

Où "my-amf" est ici notre destination par défaut.

Cela ne marche toujours pas ?

Si aucune de ces solutions ne fonctionne, essayez les manipulations suivantes:

  • Recompilez votre application Adobe Flex (Project > Clean) car si vous avez uniquement modifié les fichiers de configuration de BlazeDS (remoting-config et services-config) entre temps, il ne seront pas pris en compte par l'application Flex jusqu'à la prochaine compilation.
  • Vérifiez que vous avez bien entré le bon nom de destination dans votre fichier remoting-config.xml. Faîtes attention à la casse.
  • Essayez d'entrez le service sur lequel vous essayer de taper par votre navigateur,avec un slash à la fin. Pour de l'AMF, on a par exemple: http://{server.name}:{server.port}/{context.root}/messagebroker/amf/ (par exemple http://localhost:8400/samples/messagebroker/amf/). Si la passerelle ne répond pas, vérifiez que votre serveur applicatif fonctionne correctement.


Autres Tutoriaux Flex liés:

0 Réponses à “Flex BlazeDS – RPC Fault: faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'echoServiceDestination'"”


  1. Pas de commentaires

Laisser un commentaire

Si vous souhaitez poster du code ActionScript, mettez le entre des balises comme ceci [as]code[/as]. Pour du code MXML, mettez le dans des balises [mxml]code[/mxml]. Merci




Bientôt sur flex-tutorial.fr …

  • - Tutoriaux BlazeDS
  • - Composants Flex

tutorial flex tutorial flex

flex Adobe Air AFCS Data Filter Lib ToasterLib librairies AS3 Flex livres AS3 Flex

 

novembre 2009
L Ma Me J V S D
« oct   déc »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Catégories