"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é !

0- Les installations

  1. un FB3 beta 3 avec Europa EE et Tomcat (ou équivalent) : voir mon doux billet d'installation.
  2. avoir récupéré BlazeDS beta 1 (c'est un zip) : la page sur le lab et l'url de download
  3. dézippez BlazeDS. Je désignerai le répertoire de dézip par Répertoire-BlazeDS

1- Créons la BlazeApp

a- Créer le projet

Dans la perspective Flex Develoment allez dans le menu File->New->Flex Project

b- Dans le wizard 1

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...

c- Dans le Wizard 2

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...

d- Dans le Wizard 3

J'ai changé le Main source folder pour srcflex (je préfère :-). Finish...

Mazette, c'est presque prêt !

2- Configurons un peu

a- Les jars

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

b- Changer le nom du Context root (bug ?)

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 ???)

3- Codons un peu

La classe Java

Créons la classe Java com.baao.test.Clock (dans la perspective J2EE, cliquons droit sur le dossier Java Resources: srcjava puis dans le menu contextuel New Class) dont voici le code:
package com.baao.test;

import java.util.Date;

public class Clock 
{
	  public String getTimeAsString()
	  {
	    return (new Date()).toString();
	  }

	  public Date getTime()
	  {
	    return new Date();
	  }
}

Configuration Serveur

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>

Côté Flex

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>

Testons

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