Création d'un service Hello World avec EGL >
< Précédent | Suivant >

Leçon 1 : Créer un projet Web EGL pour le service

Un projet EGL peut jouer le rôle de service, de client ou des deux à la fois. Pour les besoins de ce tutoriel, vous allez créer deux projets : un qui agira comme service et un autre qui contiendra le client. Vous pourriez placer l'ensemble du code dans un même projet EGL, mais l'utilisation de deux projets distincts est pour vous l'occasion de découvrir comment EGL peut appeler des services siégeant dans une autre application.

Démonstration

  1. Si vous le souhaitez, vous pouvez aussi utiliser un espace de travail distinct tout en utilisant le tutoriel, de façon à ne pas interférer avec vos autres projets. Si vous voulez utiliser un espace de travail différent, procédez selon les étapes suivantes (facultatives) :
    1. Dans le plan de travail, cliquez sur Fichier > Changer d'espace de travail. La fenêtre Lanceur d'espace de travail s'ouvre.
    2. Entrez un nouvel emplacement d'espace de travail dans la zone Espace de travail.
    3. Cliquez sur OK. Le plan de travail s'ouvre à nouveau en utilisant le nouvel emplacement d'espace de travail. Vous pouvez basculer entre les emplacements d'espace de travail à tout moment, et vous pouvez avoir autant d'emplacements d'espace de travail que vous le voulez.
  2. Passez à la perspective Web :
    1. Cliquez sur Fenêtre > Ouvrir la perspective > Autre.
    2. Dans la liste des perspectives, cliquez sur Web. Si la perspective web ne figure pas dans la liste, cochez la case Afficher tout.
    3. Cliquez sur OK.
  3. Vérifiez qu'EGL est configuré pour générer automatiquement les descripteurs de déploiement. Les descripteurs de déploiement contiennent des informations qui décrivent comment les services EGL seront mis à la disposition des autres applications et comment les applications EGL trouveront les services fournis par d'autres applications.
    1. Dans le plan de travail, sélectionnez Fenêtre > Préférences... > EGL.
    2. Dans la section Caractéristiques par défaut des projets EGL, vérifiez que la case Créer un descripteur de déploiement de service EGL est cochée. Si elle ne l'est pas, cochez-la.
    3. Cliquez sur OK.
  4. Dans le plan de travail, cliquez sur Fichier > Nouveau > Projet.
  5. Dans la fenêtre Nouveau projet, développez l'entrée EGL et cliquez sur Projet EGL. Si l'entrée Projet EGL n'est pas visible, cochez la case Afficher tous les assistants. Si vous ne voyez toujours pas de catégorie EGL ou d'entrée Projet EGL, cela signifie que la fonctionnalité EGL n'est pas installée sur votre système. Exécutez à nouveau l'installation du produit et sélectionnez l'élément Fonctions supplémentaires pour EGL.
  6. Cliquez sur Suivant.
  7. Entrez le nom suivant dans la zone Nom du projet :
    EGLService
  8. Sous Types de projet EGL, sélectionnez Projet Web. Ce type de projet permet d'utiliser des interfaces utilisateur de type Web.
  9. Cliquez sur Suivant.
  10. Dans la section Environnement d'exécution cible, sélectionnez WebSphere Application Server v6.1.
  11. Assurez-vous que l'option Créer un descripteur de génération est sélectionnée. Un descripteur de génération contient les options qui serviront à générer votre programme dans un autre langage. Vous n'avez pas à vous en soucier pour le moment, car l'assistant le créera pour vous. Vous n'avez pas besoin d'utiliser les paramètres avancés, sauf si vous utilisez WAS et que vous avez précédemment changé le réglage par défaut consistant à ajouter le projet à un projet EAR (Enterprise Application Resource). Si vous utilisez WAS, votre projet EGLService doit obligatoirement appartenir à un projet EAR. Le plan de travail mémorise ce réglage.
  12. Il est possible qu'un message apparaisse, vous demandant si vous voulez passer à la perspective J2EE. Si vous voyez ce message, cliquez sur Non.
Le nouveau projet apparaît dans la vue Explorateur de projets.
Vue Explorateur de projets montrant le nouveau projet

Créer l'interface pour définir le service

Dans EGL, le terme "interface" a la même signification que dans les langages orientés objets. Pour EGL, une interface définit un plan à suivre par un service. Plus précisément, elle contient un ou plusieurs prototypes de fonction. Ces prototypes ne sont pas des fonctions utilisables en tant que telles, mais ils établissent les plans de fonctions réelles.
Par exemple, supposons que vous deviez écrire une application qui exécute des opérations arithmétiques comme celles d'une calculatrice. Vous pourriez commencer par établir la liste de toutes les opérations arithmétiques nécessaires (comme l'addition, la soustraction et la multiplication) sans écrire leur code d'exécution. Dans ce cas, vous choisiriez un nom pour chaque opération et vous définiriez ses paramètres d'entrée et de sortie, toujours sans coder la moindre logique. Vous établiriez ainsi la liste des fonctions dont aurait besoin l'application de service EGL dans une interface. Une telle interface pourrait commencer comme ceci :
interface monInterfaceCalculette

  //Fonction d'addition de nombres 
  function ajouterNombres(nombre1 decimal(10,2) in, 
    nombre2 decimal(10,2) in) returns (decimal(10,2));

  //Fonction de soustraction de nombres
  function soustraireNombres(nombre1 decimal(10,2) in, 
    nombre2 decimal(10,2) in) returns (decimal(10,2));

end

Ensuite, une fois prêt à commencer le codage du service, vous pourriez utiliser cette interface à la fois comme point de départ et comme moyen de vérifier que vous suivez le plan prévu.

Vous aurez rarement besoin d'écrire des interfaces, mais leur utilisation pour décrire vos services est généralement une bonne pratique de programmation :
  • L'interface vous permet de planifier le service bien avant d'écrire la moindre ligne de code, et EGL vous avertit ensuite si le service dévie de ce qui est prévu dans l'interface.
  • L'interface donne une description concise d'un service, expliquant ce qu'il est capable de faire sans pour autant fournir tous les détails de son implémentation.
  • Les interfaces peuvent servir d'exigences pour le développement ou la définition de règles de conformité.
  1. Dans la vue Explorateur de projets, faites un clic droit sur votre projet EGLService pour le sélectionner.
  2. Cliquez sur Nouveau > Autre.
  3. Dans la fenêtre Nouveau (ou Création), développez la branche EGL et cliquez sur Interface. Veillez à bien sélectionner l'entrée Interface figurant sous EGL, et non celle qui apparaît dans la catégorie Java.
  4. Cliquez sur Suivant.
  5. Dans la fenêtre Nouvelle partie interface EGL, assurez-vous que le dossier EGLSource de votre projet figure dans la zone Dossier source. Cette zone doit contenir EGLService\EGLSource.
  6. Dans la zone Package, tapez le nom suivant :
    interfaces
    EGL créera ce nouveau package, car votre projet ne contient pas encore de package portant ce nom.
  7. Dans la zone Nom du fichier source EGL, tapez le nom suivant pour la nouvelle interface :
    HelloInterface
    La fenêtre Nouvelle partie interface EGL doit maintenant ressembler à ceci :
    Fenêtre Nouvelle partie interface EGL
  8. Cliquez sur Terminer. La nouvelle interface est créée et s'ouvre dans l'éditeur EGL. Cette interface contient déjà un prototype de fonction, à titre d'exemple :
    function functionName(parameterName string in) returns (int);
  9. Supprimez ce prototype de fonction.
  10. A la place, insérez le code suivant pour votre propre prototype de fonction :
    function DisBonjour(nom string in, ville string in) returns (string);
  11. Sauvegardez et fermez le fichier.
Voici quelques détails techniques à propos du code que vous venez d'entrer :
  • Comme expliqué plus haut, il ne s'agit pas d'une pièce de logique EGL. Ce prototype de fonction décrit une fonction qui sera disponible dans le service. Dans le cas présent, le prototype décrit une fonction appelée DisBonjour.
  • La fonction reçoit deux paramètres d'entrée du client :
    • Une variable chaîne (string) pour le nom d'une personne
    • Une variable chaîne (string) pour le nom d'une ville
    La fonction utilisera ces paramètres pour assembler une chaîne de sortie qu'elle renverra au client.
  • Le code returns (string) indique cette valeur de retour et son type.

L'interface ressemble à ceci :

Code du composant Interface EGL

Créer le service

  1. Dans la vue Explorateur de projets, faites un clic droit sur votre projet et sélectionnez Nouveau > Service.
  2. Dans la fenêtre Nouvelle partie service EGL, assurez-vous que le dossier EGLSource de votre projet figure dans la zone Dossier source. Cette zone doit contenir EGLService\EGLSource.
  3. Dans la zone Package, tapez le nom suivant :
    services
  4. Dans la zone Nom du fichier source EGL, tapez le nom suivant pour le nouveau service :
    HelloService
  5. A droite de la zone Implémente les interfaces, cliquez sur Ajouter.
  6. Tapez un astérisque (*) dans la zone Sélectionnez les interfaces. Votre interface apparaît dans la liste Parties correspondantes.
  7. Cliquez sur HelloInterface dans la liste Parties correspondantes pour la sélectionner.
  8. Cliquez sur OK. L'interface figure maintenant dans la liste Implémente les interfaces.
  9. Cochez la case Créer comme service Web. Le fait de cocher cette case ajoute des informations de déploiement au fichier du descripteur de déploiement. La fenêtre Nouvelle partie service EGL doit maintenant ressembler à ceci :
    Fenêtre Nouvelle partie service EGL
  10. Cliquez sur Terminer. Le nouveau service est créé et s'ouvre dans l'éditeur EGL. Le service contient déjà un embryon de fonction basé sur le prototype défini dans l'interface.
  11. Supprimez le commentaire // TODO Auto-generated function et, à la place, tapez le code suivant :
    ChaineRetour string;
    ChaineRetour = nom::", bienvenue à "::ville::" !";
    return (ChaineRetour);
    Ce code crée une variable de chaîne et lui attribue une valeur basée sur les paramètres reçus en entrée. Par exemple, "Maurice, bienvenue à Bagdad !" Le code :: est un opérateur de concaténation qui joint des chaînes distinctes en une seule chaîne. Le code ressemble à ceci :
    Code du composant Service EGL
  12. Sauvegardez et fermez le fichier.
< Précédent | Suivant >