Création du projet

publicité
Création d’un projet mixte Flex-Java,
utilisant Tomcat et BlazeDS
Introduction
Requis
-
FlashBuilder 4.0 (avec accès administrateur)
Blazeds-turnkey 4.0
Apache Tomcat 6.0
Configuration du logiciel
Ouvrir FlashBuilder 4 en mode administrateur
Aller dans Aide>Installer le nouveau logiciel
Dans « utiliser avec », cliquer sur « Ajouter » puis entrer les valeurs suivantes :
Nom :
JavaIndigo
Emplacement :
http://download.eclipse.org/releases/indigo
Sélectionner :
Programming languages > Eclipse Java Devlopment Tools
Web, XML, Java EE, and OSGi Enterprise Development > *
WTP > *
Installer puis redémarrer
Création du projet
Fichier > Nouveau > Projet Flex
Dans l’écran « Création d’un projet Flex », sélectionner les entrez suivantes :
Insérer le nom du projet,
Sélectionner « Application Web »,
SDK 4.0,
Type de Serveur : J2EE
Utiliser le service d’accès aux objets distants BlazeDS
Créer un projet mixte Java/Flex à l’aide de WTP
Dossier source Java : src_java
Dans l’écran « Configuration du serveur J2EE » :
Environnement d’éxécution cible :
Nouveau
Apache Tomcat 6.0
Suivant > Terminer (il n’y a rien à ajouter vu que rien n’a été créé pour l’instant)
Sélectionner le fichier WAR BlazeDS
Chemin d’accès à la bibliothèque :
Dossier source principal : src_flex
Terminer
Hello World
Classe Java HelloWorld
Dans le dossier src_java, créer un package (ici ‘model’) et y insérer une classe HelloWorld.java
package model;
public class HelloWorld {
public HelloWorld(){}
public String sayHello()
{
return "Hello from Java";
}
}
Remoting-config
Modifier le fichier « WebContent > WEB-INF > flex > remoting-config.xml » et y ajouter un objet
Remoting :
<destination id="hello">
<properties>
<source>model.HelloWorld</source>
<scope>session</scope>
</properties>
</destination>
Chaque objet remoting doit être configure ici.
La variable <scope>session</scope> permet de préciser que les remoting objects seront supprimés
de la mémoire à la fermeture du programme
Application
C’est dans le fichier principal de votre application (ici GestionnaireStages.mxml) que tout va se
passer. Supprimez-en tout le contenu.
Général
Dans un premier temps, créer l’application générale et y ajouter un bouton. Lors du click sur le
bouton, vous allez appeler la fonction java permettant d’afficher le hello world. Pour cela, vous allez
passer par une fonction actionscript, qu’il vous faut donc déclarer lors du clic sur le bouton.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Button label="Button Hello" id="btnHello" click="callHello(event)"/>
</mx:Application>
CallHello
Commencez par créer le remoteObject, ayant pour destination le remoting défini précédement. Il
appelle une fonction au résultat, et à l’erreur.
Le <mx:Script> <![CDATA[]]></mx:Script> correspond à une balise <script> en
HTML. A noter que tout doit se passer à l’intérieur du CDATA[].
<mx:RemoteObject id="roHello" destination="hello">
<mx:method name="sayHello" result="onResult(event)"
fault="onFault('roHello.sayHello',event)"/>
</mx:RemoteObject>
<mx:Script>
<![CDATA[
]]>
</mx:Script>
Une fois l’environnement mis en place, passons au HelloWorld proprement dit. Il vous faut donc trois
fonctions : callHello(), onResult() et onFault(). Voici leur syntaxe :
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private function callHello(event:MouseEvent):void
{
roHello.sayHello() as String;
}
private function onResult(event : ResultEvent) : void
{
Alert.show(event.result.toString());
}
private function onFault(remoteObject : String, event : FaultEvent) : void
{
Alert.show(event.fault.message);
}
Remarquez que la fonction callHello va appeler la méthode du remote Object définie précédement
Réécriture des variables de compilation
Config.xml
Créer un fichier config.xml à la racine du dossier src_flex :
<?xml version="1.0" encoding="utf-8"?>
<config>
<channels>
<channel id="amf"
endpoint="http://localhost:8080/GestionnaireStages/messagebroker/amf"/>
</channels>
</config>
Avec « GestionnaireStages » le nom du projet, et « 8080 » le port par défaut du serveur tomcat
Ce fichier permet de redéfinir les variables de channel utilisées lors de la publication du contenu.
HTTPService
Dans le fichier principal, reprenez la ligne <mx :Application> et complétez-là de la façon suivante :
applicationComplete="configSrv.send()"
Ajoutez ensuite une commande HTTPService :
<mx:HTTPService id="configSrv" url="config.xml" resultFormat="e4x"
result="configResultHandler(event)"/>
Plus qu’à definer la function configResultHandler dans le code, toujours à l’intérieur de CDATA[] :
import mx.messaging.channels.AMFChannel;
import mx.messaging.ChannelSet;
private var _channelSet:ChannelSet;
private function configResultHandler(event:ResultEvent):void
{
var xml:XML = event.result as XML;
var amfEndpoint:String = "" + xml..channel.(@id=="amf").@endpoint;
if (amfEndpoint == "")
Alert.show("amf channel not configured", "Error");
else
{
_channelSet = new ChannelSet();
var channel:AMFChannel = new AMFChannel("my-amf", amfEndpoint);
_channelSet.addChannel(channel);
roHello.channelSet = _channelSet;
}
}
Nous lui demandons, au chargement de l’application, d’aller chercher le channel de diffusion dans le
fichier config.xml, puis de l’appliquer à chaque remoteObject créé. Il est évident qu’il faudra
renseigné ici chacun des remote objects créés par la suite.
Ajouter le projet sur le serveur
Dans l’onglet serveur, vous devriez avoir un serveur Tomcat.
Clic-droit > Add and Remove > ajoutez votre projet > Terminer
Lancez le serveur
Plus qu’à lancer l’application, et votre bouton vous affiche magiquement la chaine « Hello from
Java ! »
Téléchargement