Ce tutorial Adobe Flex avec BlazeDS va vous expliquer comment monter votre première application Java en liaison avec une application Flex. On va ici utiliser le service RPC (Remote Procedure Call) de BlazeDS pour la communication. Afin de faciliter l'explication, on va utiliser la version "Turnkey" de BlazeDS qui est directement livrée avec un serveur d'application Tomcat. Si vous n'avez pas encore installé BlazeDS Turnkey, suivez ces instructions:
Flex BlazeDS – Configurer son environnement BlazeDS avec Turnkey
Création du projet Java
Vous allez avoir besoin d'un projet Java pour la partie serveur de l'application. Tout d'abord, ouvrez Eclipse et créez un nouveau projet Java:
- Dans le menu d'Eclipse, choisissez File > New > Project
- Dans l'arbre, choisissez Java Project comme type de projet puis Next
- Sur la page "Create a Java Project":
- Entrez "blazeds-server" comme nom de projet
- Sélectionnez "Create project from existing source", et entrez le chemin vers la webapp "sample" comme par exemple "C:\blazeds\tomcat\webapps\samples\WEB-INF"
- Next
- Sur la page "Java Settings", assurez-vous que le Default output folder soit à "blazeds-server/WEB-INF/classes" puis Finish
Cette configuration de projet vous permet de conserver le code source de vos classes Java dans le dossier WEB-INF/src. Ces classes seront automatiquement compilées dans le dossier WEB-INF/classes.
Création des classes Java
Le service de Remoting (RPC) est un des services inclus dans BlazeDS. Ce service permet au client d'accéder aux méthodes des Plain Old Java Object (POJO = "bon vieux objets Java") sur le serveur.
Dans cet exemple, on va déployer une classe, EchoService.java, sur le serveur qui va renvoyer la String passée par le client. Le code suivant montre la définition de EchoService.java:
package remoting;
public class EchoService
{
public String echo(String text) {
return "Server says: I received '" + text + "' from you";
}
}
Pour créer cette classe, faîtes clic droit sur le projet Java que vous venez de créer puis New > Class. Comme nom de package, entrez "remoting" et comme nom de classe, EchoService:

Vous le voyez, cette classe est très simple. La méthode echo() prend un argument de type String et le retourne avec un texte supplémentaire. Une fois que la classe EchoService.java est compilée, elle sera placée dans WEB-INF/classes/remoting. Notez que les classes Java n'ont pas à importer ou à référencer des ressources BlazeDS.
Création de la destination de remoting (remoting-config.xml)
Une "Remoting Destination" expose une classe Java pour que votre application Adobe Flex puisse l'invoquer de manière distante. La propriété "id" de la destination est le nom logique que votre application Flex utilise pour faire référence à la classe distante, ce qui élimine le besoin d'avoir une référence vers un nom complet de classe Java (fully qualified) codé en dur. Ce nom logique est lié au nom de la classe Java dans le configuration de la destination qui se trouve dans remoting-config.xml.
Pour créer cette Remoting Destination:
- Dans le projet blazeds-server, ouvrez le fichier remoting-config.xml situé dans le dossier "WEB-INF/flex". Si vous l'ouvrez dans Eclipse, passez en vue "Source" pour avoir le code directement.
- Plusieurs destinations, fournies avec Turnkey sont déjà présentes. Rajoutez la votre:
<destination id="echoServiceDestination" channels="my-amf">
<properties>
<source>remoting.EchoService</source>
</properties>
</destination>
- Enregistrez le fichier
L'élément XML "source" référence la classe Java et l'attribut "channels" fait référence au canal qui va être utilisé, ici appelé "my-amf".
Création du channel de remoting (services-config.xml)
Comme expliqué en introduction à BlazeDS, la communication Adobe Flex / Java va se faire par l'intermédiaire d'un canal (channel). Il vous faut configurer ce canal.
Si vous avez installé une version Turnkey, vous pouvez sauter cette étape. Sinon, ouvrez le fichier "services-config.xml" qui se trouve dans "WEB-INF/flex/" et ajoutez cette ligne:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>false</polling-enabled>
</properties>
</channel-definition>
Création de l'application Flex
Pour créer la partie client, rendez-vous dans Flex Builder (ou restez dans Eclipse si vous l'avez installé en plug-in).
- Créez un nouveau Flex Project nommé "EchoServiceClient"
- Sélectionnez Web Application comme Application Type
- Sélectionnez J2EE comme Application Server Type
- Dans l'écran suivant, décochez "Use default location for local LiveCycle Data Services server" et entrez:
- "C:\blazeds\tomcat\webapps\samples" comme Root folder (à modifier si vous avec placé votre BlazeDS ailleurs
- "http://localhost:8400/samples" comme Root URL
- "/samples" comme Context Root

Ouvrez le fichier EchoServiceClient.mxml et entrez:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%">
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
// Send the message in response to a Button click.
private function echo():void {
var text:String = ti.text;
remoteObject.echo(text);
}
// Handle the recevied message.
private function resultHandler(event:ResultEvent):void {
ta.text += "Server responded: "+ event.result + "\n";
}
// Handle a message fault.
private function faultHandler(event:FaultEvent):void {
ta.text += "Received fault: " + event.fault + "\n";
}
]]>
</mx:Script>
<mx:RemoteObject id="remoteObject"
destination="echoServiceDestination"
result="resultHandler(event);"
fault="faultHandler(event);"/>
<mx:Label text="Enter a text for the server to echo"/>
<mx:TextInput id="ti" text="Hello World!"/>
<mx:Button label="Send" click="echo();"/>
<mx:TextArea id="ta" width="100%" height="100%"/>
</mx:Application>
Cette application Flex utilise le composant RemoteObject pour accéder au service EchoService. Il utilise la propriété "destination" pour spécifier la Remoting Destination créée plus haut.
L'utilisateur clique ensuite sur le Button pour invoquer la méthode echo() distante. Suivant la réponse du serveur, on va passer dans le resultHandler ou le faultHandler, qui vont écrire dans un champ texte.
Lancez votre application et vous devriez normalement recevoir votre réponse. Sinon, regardez le code renvoyé par le faultHandler qui vous aidera à trouver l'origine de l'erreur.
Autres Tutoriaux Flex liés:
- Flex BlazeDS – Tutorial Application Java Messaging avec BlazeDS Turnkey
- Flex BlazeDS – RPC Fault: faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'echoServiceDestination'"
- Flex BlazeDS – Received fault: RPC Fault: faultCode="Server.ResourceUnavailable" faultDetail="Type 'remoting.EchoService' not found."
- Flex BlazeDS – Configurer son environnement BlazeDS avec Turnkey
- Flex BlazeDS – Spécifier la configuration BlazeDS à la compilation (services-config.xml et context-root)









Très utile merci beaucoup !