< Précédent | Suivant >

Leçon 2.2 : Liaison de la table des employés à la source de données du service Web

L'application My Company Directory affiche la liste de tous les enregistrements d'employés actuellement présents dans l'annuaire. Les enregistrements s'affichent dans une JTable (employeesTable) dont les colonnes peuvent servir de clés de tri et qui comprennent le nom, le prénom, l'adresse e-mail et l'ID de l'employé. Pour que la table employeesTable reçoive les enregistrements à afficher, vous devez la lier à un objet de données qui est renvoyé par la source de données de l'exemple de service Web.

Aperçu des objets de données, des sources de données et des lieurs (binders)

Afin de procurer à la table employeesTable un objet de données local avec lequel elle puisse fonctionner, vous allez ajouter une source de données à l'application en utilisant l'éditeur visuel. Cette source de données aura pour rôle de se connecter au proxy du service Web et de découvrir les méthodes disponibles pour votre application. Vous choisirez ensuite la méthode de service getLightEmployeeRecord accessible à partir de la source de données. Enfin, vous établirez un lien entre la table employeesTable de votre application et les champs renvoyés dans l'objet de données de lignes (lightEmployeeRecordRows).

Vous pouvez rapidement et facilement créer tous ces objets de données et sources de données à l'aide des classes de lieur (binder) intégrées à l'éditeur visuel Java. L'éditeur visuel offre un ensemble d'interfaces et de classes génériques qui sont générées dans votre projet à mesure que vous liez les composants visuels aux fabriques de données. Les classes de lieur sont générées, par défaut, dans un package nommé jve.generated. L'éditeur visuel fournit les classes de lieur sous forme d'implémentation générique que vous pouvez personnaliser et étendre pour répondre aux besoins spécifiques de votre application. Le présent tutoriel illustre la puissance et la souplesse d'une utilisation simple des classes de lieur par défaut.

Important : Avant de commencer cet exercice, il est vivement recommandé de lire les rubriques d'aide suivantes. Ces rubriques vous permettent d'en savoir plus sur la fonctionnalité et la logique qui se cachent derrière les objets de données, les sources de données et les lieurs (binders) fournis par l'éditeur visuel Java :
  • Généralités sur les lieurs de données
  • Référence de l'API du lieur (Binder)

Pour ce tutoriel, vous allez utiliser une source de données de service Web, plusieurs types d'objet de données et plusieurs types de lieurs dans votre application. Lorsque vous ajouterez des instances de ces objets à votre application, l'éditeur visuel ajoutera les classes nécessaires dans le package jve.generated du projet, où vous pourriez étendre, remplacer et réécrire la logique de liaison des données. L'éditeur visuel Java offre une représentation graphique des objets de liaison en affichant, dans la zone à format libre de la vue de conception, les objets de données, les sources de données et les lieurs qui sont utilisés par votre application. Il trace des lignes entre d'une part les composants visuels et d'autre part les objets de données et les sources de données pour afficher les liaisons actuelles d'un objet sélectionné.

Le diagramme ci-après schématise la manière dont les composants visuels, les lieurs, les objets de données et les sources de données interagissent. L'application que vous créez dans le présent tutoriel illustre une utilisation légèrement plus complexe et créative des lieurs. Ce diagramme ne représente pas de manière exacte les lieurs, les objets de données et les sources de données de l'exemple d'application que vous créez.

Figure 1. Ce diagramme illustre les relations entre composants visuels, lieurs (binders), objets de données et sources de données.Diagramme illustrant les relations entre composants visuels, lieurs (binders), objets de données et sources de données

Dans la figure 1, chaque composant visuel possède son propre lieur qui l'associe à un objet de données ou, dans le cas du bouton, à une source de données. Les lieurs des zones de texte lient chaque zone à une propriété spécifique de l'objet de données. L'objet de données de ligne et l'objet de données de ce diagramme reçoivent leurs données d'appels directs à un service de la source de données. L'objet de données des zones de texte utilise une valeur de clé de la ligne sélectionnée dans la table comme argument pour appeler Service2, qui renvoie un enregistrement complet censé contenir davantage d'informations sur cette ligne. Cet enregistrement complet est utilisé à son tour comme argument du lieur d'action du bouton lorsqu'il appelle Service3, qui peut être une méthode mettant à jour les valeurs entrées dans les zones. Pour des explications plus détaillées sur les objets de données, les lieurs de données et les sources de données, cliquez sur les liens fournis précédemment.

Générer un proxy Java de service Web dans votre projet à l'aide du fichier WSDL fourni

Pour pouvoir exploiter le service Web exécuté sur un serveur, votre application Java requiert un proxy (ou client) Java avec lequel elle puisse interagir. En utilisant un fichier WSDL, vous pouvez générer un proxy Java dans votre projet Java à l'aide de l'assistant Client du service Web. Votre projet MyDirectory inclut le fichier EmployeeDirectory.wsdl que vous utiliserez pour générer ce proxy. Une fois celui-ci généré, vous pourrez créer une source de données représentant le service Web et commencer à lier les composants visuels de l'application aux objets de données.

Important : Dans cet exercice, on suppose que vous avez déployé le service Web décrit par le fichier WSDL sur une installation locale de WebSphere Application Server et utilisé le port par défaut de l'hôte local (http://localhost:9080). Si vous avez déployé le fichier EAR de manière différente, vous devez éditer le fichier WSDL en conséquence avant de commencer.

Pour générer le proxy Java du service Web dans votre projet, procédez comme suit :

  1. Sur la barre de menus principale, sélectionnez Fichier > Nouveau > Autre, puis choisissez Services Web > Client du service Web. Si la catégorie Services Web n'est pas proposée dans la liste, sélectionnez Afficher tous les assistants.
  2. Utilisez l'assistant pour définir le client de service Web :
    1. Pour la définition du service, entrez le fichier WSDL qui se trouve dans votre projet MyDirectory : /MyDirectory/EmployeeDirectory.wsdl
    2. Dans la zone Type de client, sélectionnez Proxy Java.
    3. Réglez le curseur sur l'étape de déploiement du client.
    4. Vérifiez que l'environnement d'exécution du service Web est défini correctement compte tenu du serveur que vous exécutez. Ce tutoriel a été testé avec les serveurs WebSphere versions 6.0 et 6.1 et l'environnement d'exécution IBM WebSphere JAX-RPC.
    5. Assurez-vous que le client de type proxy Java aura comme dossier de sortie le projet MyDirectory.

    Assistant Client du service Web

  3. Cliquez sur Terminer. L'assistant Client du service Web génère le proxy Java dans un nouveau package (directory.service) qu'il crée dans votre projet.

Lier le composant employeesTable à un objet de données de lignes renvoyé par le service Web

Le composant employeesTable étant le premier composant visuel que vous liez dans cette application, vous devez créer une source de données pointant sur le proxy de service Web que vous venez d'ajouter à votre projet. Vous la réutiliserez dans les exercices à venir, lorsque vous devrez lier les autres composants visuels de l'application. Dans la présente étape, vous allez ajouter la source de données du service Web et l'objet de données lightEmployeeRecordRows.

Pour lier la table des employés, procédez comme suit :
  1. Sélectionnez le composant employeesTable dans la vue Beans Java ou dans la vue de conception. (Veillez à ne pas sélectionner son composant parent JScrollPane.) Un petit onglet intitulé Lier apparaît en haut du composant employeesTable, dans la zone de conception.

    Onglet Lier du composant JTable sur le canevas graphique

  2. Cliquez sur l'onglet Lier du composant employeesTable. Vous pouvez également cliquer avec le bouton droit sur le composant employeesTable et sélectionner Propriétés de liaison.
  3. Dans la mesure où l'application ne contient pas d'objet de données, vous devez en ajouter un. Cliquez sur Nouvel objet de données de source de données.
  4. Dans la zone Type de la source, sélectionnez Service Web.
  5. Dans la mesure où vous n'avez pas encore ajouté la source de données du service Web à votre application, vous devez l'ajouter maintenant. En regard de la zone Source de données, cliquez sur le bouton Nouveau... pour ouvrir la boîte de dialogue Ajout d'une source de données de service Web, qui répertorie les clients ou proxies de service Web présents dans votre projet.
  6. Sélectionnez le service Web EmployeeDirectory et cliquez sur Terminer. Une nouvelle source de données est ajoutée au fichier DirectoryApp.java.

    Boîte de dialogue Ajout d'une source de données de service Web

  7. Dans la zone Service source de la boîte de dialogue Nouvel objet de données de source de données, sélectionnez getLightEmployeeRecords() et acceptez le nom par défaut du nouvel objet de données : lightEmployeeRecordRows. Aucun paramètre n'est requis pour cette méthode de service. Cliquez sur OK. Le nouvel objet de données est créé et affiché dans la zone à format libre de la vue de conception.

    Boîte de dialogue Nouvel objet de données de source de données

    Conseil : Comme le composant que vous êtes en train de lier est une table, la boîte de dialogue Nouvel objet de données de source de données affiche uniquement les services qui renvoient des objets de données de lignes. Dans le cas présent, la méthode getLightEmployeeRecords() est le seul service disponible qui renvoie un tableau d'objets.
  8. Dans la boîte de dialogue Liaisons de données de table, sélectionnez l'objet de données lightEmployeeRecordRows.
  9. A présent, vous devez sélectionner les propriétés de l'objet de données lightEmployeeRecordRows que vous souhaitez afficher dans la table employeesTable :

    Boîte de dialogue Liaisons de données de table

    1. Cliquez sur le bouton bouton double flèche pour ajouter toutes les propriétés de l'objet à la liste Colonnes de la table.
    2. Utilisez les boutons fléchés pour organiser les colonnes dans l'ordre suivant, de haut en bas : lastName, firstName, email, employeeID
    3. Renommez les titres de colonne : Last name, First name, Email, Employee ID
      Conseil : Une fois la table liée, vous avez toujours la possibilité de retourner aux propriétés de liaison pour renommer et réorganiser les colonnes à votre guise.
    4. Cliquez sur OK.
La table employeesTable est désormais liée à l'objet de données lightEmployeeRecordRows à l'aide d'un JRowTableBinder. Si vous cliquez sur l'objet de données lightEmployeeRecordRows dans la zone à format libre, l'éditeur visuel trace une ligne entre l'objet de données et la table. Sur cette ligne, le JRowTableBinder est représenté par l'icône de lieur de table icône de lieur de table. Une autre ligne indique que l'objet de données utilise webServiceDataSource comme source de données.

Vue des lignes de liaison du composant JTable

Récapitulatif de la leçon

Examinez les modifications apportées à votre projet et à l'application. Au cours de cette leçon, vous avez ajouté la source de données du service Web, un objet de données de lignes et un lieur (binder) établissant la liaison entre cet objet et le composant visuel employeesTable.

Examinez le nouveau package (jve.generated) qui a été créé dans le projet afin de contenir les classes de lieur générées par l'éditeur visuel Java. Notez également le nouveau package (directory.service) qui contient les classes du proxy Java du service Web.

Packages du projet MyDirectory

A présent, lorsque vous exécutez l'application My Company Directory, la table des employés est alimentée par le service Web avec les enregistrements d'employé existants.

< Précédent | Suivant >