Flex BlazeDS – Received fault: RPC Fault: faultCode="Server.ResourceUnavailable" faultDetail="Type 'remoting.EchoService' not found."
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:
[RPC Fault faultString="Cannot create class of type 'remoting.EchoService'." faultCode="Server.ResourceUnavailable" faultDetail="Type 'remoting.EchoService' not found."]
En remplaçant bien sur "remoting.EchoService" par la classe qui pose problème. Comme l'explique le message d'erreur, le serveur applicatif n'arrive pas à trouver la classe distante que vous tentez d'appeler. Les classes Java que vous créez se trouvent typiquement dans le dossier WEB-INF/src/ de votre Web application. Une fois compilées, les fichiers .class correspondant à ces classes sont copiés dans le dossier /WEB-INF/classes/.
Vous ne verrez pas le dossier /WEB-INF/classes/ dans la vue Package Explorer d'Eclipse. Utiliser un explorateur de fichiers classique.
Pour résoudre ce problème, vérifiez que le fichier .class correspondant à l'objet Java que vous souhaitez appeler se trouve bien dans le répertoire WEB-INF/classes/. S'il ne s'y trouve pas, compilez à nouveau votre projet Java (Project > Clean).
Si cela ne résous toujours pas votre problème, vérifiez que vous ne vous êtes pas trompé dans la casse du nom de classe ainsi que dans les noms de package.
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





