"Y'a des mecs qui retirent leur galure en entendant son blaze !"-- Michel Audiard
BlazeDS, c'est la véritable bombe thermonucléaire de Flex 3. Le SDK ou le builder n'ont pas été radicalement changé en version 3, mais la partie serveur de Flex, vendue très chère en version 2, voit certains de ses services passés opensource. le nom de l'affaire : BlazeDS !
Premier service que je vous propose d'étudier, l'un des plus important, la connexion directe du client Flex avec une classe
façade Java (dans le monde Flash/Flex, cela s'appelle le Remoting).
Damned !, une JavaFlexApp, un fichier de config et le tour est joué !
Dans la perspective Flex Develoment allez dans le menu File->New->Flex Project
Project Name : BlazeApp
Application Type : Web Application
Application server Type : J2EE
Cochez use remote object en choisissant LiveCycle Data Service
Cochez Create.. WTP
Changez le java source folder : srcjava
Next...
Sélectionnez Apache Tomcat v6.0 pour le Target runtime. J'ai laissé toutes les autres valeurs par défaut sauf le Flex war file que j'ai positionné à : Répertoire-BlazeDS/blazeds.war (si une erreur apparaît ici, vérifiez bien que vous utilisez la version beta 3 ou + du plugin Flex builder). Next...
J'ai changé le Main source folder pour srcflex (je préfère :-). Finish...
Mazette, c'est presque prêt !
L'installation Blazeds sur Tomcat nécessite de placer 2 jars dans le lib de Tomcat (pas dans le lib de l'application)
Répertoire-BlazeDS/tomcat/lib/blazeds/flex-tomcat-server.jar dans Répertoire-Tomcat6/lib
Répertoire-BlazeDS/tomcat/lib/blazeds/flex-tomcat-common.jar dans Répertoire-Tomcat6/lib
Dans les propriétés du projet/Flex Server changer le Context root en /BlazeApp par défaut c'est le "content root" qui y est positionné (/WebContent ???)
package com.baao.test;
import java.util.Date;
public class Clock
{
public String getTimeAsString()
{
return (new Date()).toString();
}
public Date getTime()
{
return new Date();
}
}
Référençons cette classe Java dans le fichier de config du remoting.
Dans le projet, éditons /WebContent/WEB-INF/flex/remoting-config.xml. A la fin du fichier, juste avant le tag </service>, ajoutons la référence à notre classe :
<destination id="clock">
<properties>
<source>com.baao.test.Clock</source>
</properties>
</destination>
Dans BlazeApp.mxml, connectons-nous à cette classe:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="clockService.getTimeAsString()">
<mx:RemoteObject id="clockService" destination="clock"/>
<mx:Label id="clockLabel" text="{clockService.getTimeAsString.lastResult}"/>
<mx:Button label="Refresh!" click="clockService.getTimeAsString()"/>
<mx:Label id="clockLabelTime" text="{clockService.getTime.lastResult}"/>
<mx:Button label="Refresh!" click="clockService.getTime()"/>
</mx:Application>
Dans la vue du serveur, arrêtons le serveur s'il tourne pour lui ajouter la nouvelle application
Lançons l'application Flex en cliquant droit sur le fichier BlazeApp.mxml puis Run as->Flex Application
Bienvenue dans le monde BlazeApp :-)
-Yann