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

Flex BlazeDS – Tutorial Application Java Remoting avec BlazeDS Turnkey

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:

remoting-1

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

remoting-2

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:

1 Réponse à “Flex BlazeDS – Tutorial Application Java Remoting avec BlazeDS Turnkey”


  1. 1 echoUndifined déc 27th, 2009 at 19:54

    Très utile merci beaucoup !

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