by Adobe
Adobe logo

Created

2 May 2011

 

Déployer le code de service

 
 

Code

Aucune modification du code.
 

Didacticiel

Dans ce didacticiel, vous allez identifier à quel endroit du serveur web placer le code de service, c'est-à-dire les fichiers de classe côté serveur, afin que votre application Flex puisse y accéder. Cette tâche étant étroitement liée au serveur d'applications, consultez la section relative à la technologie de votre serveur : PHP, ColdFusion ou Java.
 

 
PHP

Lors du déploiement d'une application Flex et PHP sur un serveur de production, vous devez vérifier que :
 
  • Zend Framework est installé sur le serveur ;
  • les fichiers gateway.php et amf_config.ini ont été placés sur le serveur et mis à jour en fonction des emplacements appropriés du serveur de production ;
  • les classes PHP appelées par l'application Flex figurent dans l'un des répertoires indiqués dans le fichier amf_config.ini.

 
Étape 1 : Dans Flash Builder, examinez le fichier EmployeeService généré.

Le nom exact de ce fichier est services.employeeservice._Super_EmployeeService.as. Repérez les instructions d'affectation source, endpoint et destination (voir Figure 1).
 
Lorsque vous créez un service de données dans Flash Builder, vous indiquez l'emplacement de la classe PHP à appeler. En effet, le nom de cette classe est codé en dur dans ce fichier de service généré, mais pas son emplacement.
 
Examinez le code indiquant l'emplacement de la classe PHP.
Figure 1. Examinez le code indiquant l'emplacement de la classe PHP.
Notez que l'instruction endpoint, qui indique le fichier à appeler, désigne le fichier gateway.php situé sur le serveur PHP. Si vous utilisez Flash Builder 4.5 pour PHP, un dossier public est créé pour le projet PHP et les fichiers gateway.php et amf_config.ini générés y sont placés. Lorsque vous déployez des fichiers sur un serveur web, vous devez vous assurer que gateway.php reste à cet emplacement (ou modifier le fichier de classe de service Flex).
 
En cas de modification de la classe PHP, vous pouvez actualiser le service de données à partir de la vue Données/Services, ce qui entraîne la mise à jour des fichiers générés. En revanche, si vous renommez la classe PHP, vous devez recréer le service de données.
 

 
Étape 2 : Ouvrez les fichiers Flash Remoting générés.

Dans Flash Builder pour PHP, ouvrez les fichiers gateway.php et amf_config.ini stockés dans le dossier public du projet PHP TestDrive.
 
gateway.php constitue le point de terminaison de toutes les demandes Flash Remoting émises par l'application. Il traite la demande de service conjointement avec Zend Framework, en appelant la méthode de classe appropriée et en se chargeant de la traduction des données et de la création des paquets. Il fait référence à un fichier de configuration, amf_config.ini, qui définit l'emplacement du dossier racine web et celui de Zend Framework, un indicateur de production (pour supprimer les messages de débogage) et les répertoires où rechercher les classes indiquées dans les appels de service :
 
[zend] ;set the absolute location path of webroot directory, example: ;Windows: C:\apache\www ;MAC/UNIX: /user/apache/www webroot =/usr/local/zend/apache2/htdocs/ ;set the absolute location path of zend installation directory, example: ;Windows: C:\apache\PHPFrameworks\ZendFramework\library ;MAC/UNIX: /user/apache/PHPFrameworks/ZendFramework/library ;zend_path = [zendamf] amf.production = true amf.directories[]=TestDrive/services
Dans la mesure où ce fichier comporte la liste des répertoires des classes utilisées dans les appels de service Flash Remoting, lorsque vous déployez votre application Flex sur un serveur web, les classes PHP auxquelles elle fait appel doivent impérativement se trouver dans l'un de ces répertoires. Dans le cas contraire, vous devez mettre ce fichier à jour afin qu'il contienne également le nouvel emplacement du fichier de service. Par ailleurs, vous devez affecter la valeur true à amf.production afin de supprimer les messages de débogage.
 
Bien entendu, vous devez aussi mettre le fichier amf_config.ini à jour en fonction de l'emplacement du dossier racine web et de Zend Framework sur le serveur de production.
 

 
Étape 3 : Ouvrez le dossier racine web PHP.

Repérez le dossier de Zend Framework.
 
Vous devez vérifier que Zend Framework est également installé sur le serveur de production et que son emplacement est correctement indiqué dans le fichier amf_config.ini.
 
Dans ce module, vous avez appris les concepts de base du déploiement d'une application Flex : création d'une version validée, incorporation de l'application dans une page web et accessibilité des fichiers de service côté serveur.
 

 
ColdFusion

Vous pouvez placer votre application Flex et les composants ColdFusion qu'elle appelle sous /ColdFusion/wwwroot/. Ils ne doivent pas nécessairement figurer dans le même dossier et peuvent se trouver dans n'importe quel sous-dossier. Le chemin relatif qui les sépare est sans importance. En revanche, les composants CFC doivent se trouver au même emplacement relatif au dossier racine web que celui où ils figuraient sur le serveur de développement.
 
Pour placer les composants CFC en dehors du dossier racine web, vous devez créer un mappage ColdFusion désignant cet emplacement, puis spécifier l'utilisation de mappages ColdFusion dans le fichier de configuration utilisé pour les demandes Flash Remoting.
 

 
Étape 1 : Recherchez le fichier de configuration de Flash Remoting.

Sélectionnez Projet > Propriétés, puis Compilateur Flex.
 
L'argument de compilateur suivant apparaît :
 
-services "/Applications/ColdFusion9/wwwroot/WEB-INF/flex/services-config.xml"
Cet argument a été ajouté lorsque vous avez créé le projet (et indiqué qu'il utilise un serveur ColdFusion et Flash Remoting). Il indique l'emplacement du fichier services-config.xml, qui contient les détails du mode de communication entre l'application et le serveur et désigne les classes côté serveur qui doivent gérer les demandes, la traduction des données et la création des paquets.
 

 
Étape 2 : Ouvrez le fichier services-config.xml.

Ce fichier se trouve dans /ColdFusion9/wwwroot/WEB-INF/flex/. Repérez la balise coldfusion dans la définition du canal my-cfamf.
 
Elle contient des paramètres qui déterminent si ColdFusion utilise des mappages pour rechercher les composants CFC, si les méthodes publiques et distantes seront accessibles et comment gérer la casse des valeurs de propriété lors de la conversion entre ColdFusion et ActionScript (la distinction MAJ/min s'applique dans ActionScript, mais pas dans ColdFusion).
 
<coldfusion> <access> <use-mappings>true</use-mappings> <method-access-level>remote</method-access-level> </access> <use-accessors>true</use-accessors> <use-structs>false</use-structs> <property-case> <force-cfc-lowercase>true</force-cfc-lowercase> <force-query-lowercase>true</force-query-lowercase> <force-struct-lowercase>true</force-struct-lowercase> </property-case> </coldfusion>
Une instruction include concernant un fichier remoting-config.xml figure également vers le début du fichier.
 
<service-include file-path="remoting-config.xml" />
Remarque : si vous n'utilisez pas ColdFusion 9, vos fichiers de configuration sont légèrement différents. Pour plus de détails, consultez la documentation ColdFusion.
 

 
Étape 3 : Ouvrez le fichier remoting-config.xml.

Ce fichier se trouve dans /ColdFusion9/wwwroot/WEB-INF/flex/. Recherchez la destination ColdFusion.
 
Il s'agit de la destination par défaut utilisée pour les appels adressés aux composants ColdFusion par une application Flex. Si le caractère générique * est indiqué comme source, cela signifie que l'application peut appeler un composant CFC dans n'importe quel emplacement. Dans ce cas, l'emplacement du composant CFC doit être indiqué dans le fichier de l'application Flex.
 
<destination id="ColdFusion"> <channels> <channel ref="my-cfamf"/> </channels> <properties> <source>*</source> </properties> </destination>
Remarque : vous pouvez également spécifier des destinations existantes associées à un point de terminaison CFC particulier.
 

 
Étape 4 : Dans Flash Builder, examinez le fichier EmployeeService généré.

Le nom exact de ce fichier est services.employeeservice._Super_EmployeeService.as. Repérez les instructions d'affectation source et destination (voir Figure 2).
 
Lorsque vous créez un service de données dans Flash Builder, vous indiquez l'emplacement du composant CFC à appeler, et cette valeur est codée en dur dans ce fichier de service généré. La valeur de destination est ColdFusion, c'est-à-dire le nom de la destination par défaut indiqué dans le fichier remoting-config, et celle de source est le chemin d'accès au composant CFC à partir du dossier racine web.
 
Examinez le code indiquant l'emplacement du composant CFC.
Figure 2. Examinez le code indiquant l'emplacement du composant CFC.
En cas de modification du composant CFC, vous pouvez actualiser le service de données à partir de la vue Données/Services, ce qui entraîne la mise à jour des fichiers générés. En revanche, si vous déplacez ou renommez le composant CFC, vous devez recréer le service de données. Cela signifie que lorsque vous déployez l'application Flex sur un serveur web, les composants CFC qu'elle appelle doivent se trouver au même emplacement relatif au dossier racine web que celui où ils figuraient sur le serveur de développement.
 
Dans ce module, vous avez appris les concepts de base du déploiement d'une application Flex : création d'une version validée, incorporation de l'application dans une page web et accessibilité des fichiers de service côté serveur.
 

 
Java

Lors du déploiement d'une application Flex ou Java sur un serveur de production, vous devez configurer BlazeDS pour l'application web à laquelle vous ajoutez votre application Flex. Vous devez également modifier le fichier remoting-config.xml de façon à ce que sa destination ait le nom que celui utilisé dans votre application et pointe vers la classe Java appropriée.
 

 
Étape 1 : Localisez les fichiers BlazeDS requis.

Ouvrez le dossier /testdrive/ .
 
Si vous créez une nouvelle application web, vous pouvez directement mettre en package votre application de développement et la déployer. Sinon, vous devez configurer BlazeDS pour l'application web de production. Vous pouvez obtenir les fichiers nécessaires dans l'application web de développement ou télécharger le fichier WAR BlazeDS et les récupérer dans le fichier WAR extrait.
 
Ouvrez le dossier /testdrive/WEB-INF/lib . Copiez tous les fichiers JAR dans le dossier lib de l'application web de production (voir Figure 3). La plupart de ces fichiers permettent de gérer la communication entre Flash Player et le serveur, à l'exception des fichiers flex-rds-server.jar et derby.jar. Le fichier flex-rds-server.jar est utilisé par Flash Builder au cours de la phase de développement pour créer un service de données par introspection des classes côté serveur. Le fichier derby.jar est destiné à la base de données Apache Derby Embedded utilisée par l'application.
 
Examinez les fichiers BlazeDS requis.
Figure 3. Examinez les fichiers BlazeDS requis.
Ouvrez le dossier /testdrive/WEB-INF/flex. Copiez-le dans le dossier WEB-INF de l'application web de production. Il contient l'ensemble des fichiers de configuration de BlazeDS.
 
Ouvrez le dossier /testdrive/WEB-INF/web.xml. Copiez-le également dans le dossier WEB-INF de l'application de production. Si un fichier web.xml est déjà configuré dans l'application de production, copiez simplement le mappage de Servlet pour MessageBrokerServlet et l'écouteur de HttpFlexSession. Voici le code à utiliser :
 
<!-- Http Flex Session attribute and binding listener support --> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener> <!-- MessageBroker Servlet --> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <display-name>MessageBrokerServlet</display-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <init-param> <param-name>services.configuration.file</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern>> </servlet-mapping>
L'autre mappage de Servlet, contenu dans le fichier web.xml, fait référence au RDSDispatchServlet utilisé par Flash Builder pour créer un service de données par introspection des classes côté serveur.
 

 
Étape 2 : Ouvrez les fichiers services-config.xml et remoting-config.xml.

Ils se trouvent dans le dossier /testdrive/WEB-INF/flex/.
 
Le fichier services-config.xml contient une instruction include concernant le fichier remoting-config.xml.
 
<service-include file-path="remoting-config.xml" />
Dans le fichier remoting-config.xml, repérez la destination employeeService :
 
<destination id="employeeService"> <properties> <source>services.EmployeeService</source> <scope>application</scope> </properties> </destination>
L'application du serveur de production à laquelle vous ajoutez votre application doit également contenir un fichier remoting-config.xml, avec une destination de ce nom et pointant vers la classe Java appropriée. La classe Java peut se trouver à un emplacement différent de celui qu'elle avait sur le serveur de développement ; cette destination doit refléter son emplacement sur le serveur de production.
 

 
Étape 3 : Repérez la référence de l'application Flex au fichier service-config.xml.

Dans Flash Builder, sélectionnez Projet > Propriétés > Compilateur Flex.
 
L'argument de compilateur qui apparaît se présente de la manière suivante :
 
-services "/Applications/tomcat/webapps/testdrive/WEB-INF/flex/services-config.xml"
Cet argument a été ajouté lorsque vous avez créé le projet et indiqué qu'il utilise un serveur Java et BlazeDS.
 

 
Étape 4 : Dans Flash Builder, examinez le fichier EmployeeService généré.

Le nom exact de ce fichier est services.employeeservice._Super_EmployeeService.as. Repérez l'instruction d'affectation de destination (voir Figure 4).
 
Lorsque vous créez un service de données dans Flash Builder, vous sélectionnez un service dans une liste de destinations prédéfinies dans le fichier remoting-config.xml.
 
Examinez le code indiquant la destination de la classe Java.
Figure 4. Examinez le code indiquant la destination de la classe Java.
En cas de modification de la classe , vous pouvez actualiser le service de données à partir de la vue Données/Services, ce qui entraîne la mise à jour des fichiers générés. Si vous déplacez la classe, veillez à mettre à jour la destination dans le fichier remoting-config.xml afin de refléter son nouvel emplacement. En revanche, si vous renommez la classe en cours de développement, vous devez recréer le service de données.
 
Dans ce module, vous avez appris les concepts de base du déploiement d'une application Flex : création d'une version validée, incorporation de l'application dans une page web et accessibilité des fichiers de service côté serveur.
 

 
Pour en savoir plus

Pour en savoir plus sur cette rubrique, consultez les ressources suivantes :
 
 
Documentation