< Vorherige Lektion | Nächste Lektion >

Lerneinheit 2.2: Die Mitarbeitertabelle an die Datenquelle des Web-Service binden

In der Anwendung 'My Company Directory' wird eine Liste aller momentan im Verzeichnis vorhandenen Mitarbeiterdatensätze angezeigt. Die Datensätze werden in einer JTable (employeesTable) mit sortierbaren Spalten angezeigt und enthalten Nachname, Vorname, E-Mail und Mitarbeiter-ID. Zum Abrufen der Datensätze für die Tabelle müssen Sie die employeesTable an ein Datenobjekt binden, das von der Datenquelle des Beispiel-Web-Service zurückgegeben wird.

Übersicht über Datenobjekte, Datenquellen und Binder

Sie verwenden zum Abrufen eines lokalen Datenobjekts, mit dem die employeesTable arbeiten kann, den Visual Editor, um Ihrer Anwendung eine Datenquelle hinzuzufügen. Die Datenquelle stellt eine Verbindung zum Beispiel-Web-Service-Proxy her und erkennt die für die Anwendung verfügbaren Servicemethoden. Sie wählen daraufhin die Servicemethode 'getLightEmployeeRecord' aus, die von der Datenquelle verfügbar gemacht wird. Schließlich binden Sie die employeesTable in Ihrer Anwendung an die Felder, die im Zeilendatenobjekt (lightEmployeeRecordRows) zurückgegeben werden.

Sie können alle diese Datenquellen und Datenobjekte rasch und einfach unter Verwendung der integrierten Binder-Klassen des Java Visual Editor erstellen. Der Visual Editor stellt eine Reihe generischer Schnittstellen und Klassen bereit, die in Ihr Projekt generiert werden, wenn Sie visuelle Komponenten an Datenfactorys binden. Die Binder-Klassen werden standardmäßig in ein Paket namens jve.generated generiert. Der Visual Editor stellt die Binder-Klassen als generische Implementierung bereit, die Sie den Anforderungen Ihrer Anwendung entsprechend weiter anpassen und erweitern können. In diesem Lernprogramm werden Potenzial und Flexibilität der standardmäßigen Binder-Klassen veranschaulicht, die bereits bei einer grundlegenden und einfachen Verwendung dieser Klassen gegeben sind.

Wichtig: Es wird dringend empfohlen, vor dem Beginn dieser Übung die folgenden Hilfethemen zu lesen. Diese Themen helfen Ihnen, mehr über die Funktionalität und die Logik zu erfahren, die hinter den vom Java Visual Editor bereitgestellten Datenobjekten, Datenquellen und Bindern stehen.
  • Datenbinder - Übersicht
  • Binder-API - Referenz

In diesem Lernprogramm verwenden Sie eine Web-Service-Datenquelle, mehrere Typen von Datenobjekten und verschiedene Typen von Bindern in der Anwendung. Wenn Sie Instanzen von diesen Objekten der Anwendung hinzufügen, fügt der Visual Editor die erforderlichen Klassen dem Paket 'jve.generated' in Ihrem Projekt hinzu. Dort können Sie die Datenbindungslogik erweitern, ersetzen oder neu schreiben. Der Java Visual Editor bietet visuelle Unterstützung für die Bindungsobjekte, indem er im unformatierten Bereich der Entwurfssicht die Datenobjekte, Datenquellen und Binder anzeigt, die von Ihrer Anwendung verwendet werden. Der Visual Editor zeichnet Linien zwischen visuellen Komponenten und den Datenobjekten und Datenquellen, um die aktuellen Bindungen für ein ausgewähltes Objekt zu veranschaulichen.

Das folgende Diagramm ist eine einfache Übersicht, in der die Interaktion zwischen visuellen Komponenten, Bindern, Datenobjekten und Datenquellen dargestellt ist. Die Anwendung, die Sie im Rahmen dieses Lernprogramms erstellen, beinhaltet eine etwas komplexere und kreativere Verwendung der Binder. Dieses Diagramm stellt nicht genau die Binder, Datenobjekte und Datenquellen in der von Ihnen erstellten Beispielanwendung dar.

Abbildung 1. Dieses Diagramm veranschaulicht eine beispielhafte Beziehung zwischen visuellen Komponenten, Bindern, Datenobjekten und Datenquellen.Dieses Diagramm veranschaulicht die Beziehung zwischen visuellen Komponenten, Bindern, Datenobjekten und Datenquellen.

In Abbildung 1 verfügt jede visuelle Komponente über einen eigenen Binder, der sie einem Datenobjekt oder, im Fall der Schaltfläche, einer Datenquelle zuordnet. Die Binder für die Textfelder binden das Feld an eine bestimmte Eigenschaft des Datenobjekts. Sowohl das Zeilendatenobjekt als auch das Datenobjekt in dem vorliegenden Diagramm rufen ihre Daten anhand von direkten Aufrufen eines Service in der Datenquelle ab. Das Datenobjekt für das Textfeld verwendet einen Schlüsselwert aus der ausgewählten Zeile in der Tabelle als Argument für den Aufruf von Service2, der einen vollständigen Datensatz zurückgibt. Dieser Datensatz enthält vermutlich weitere Informationen über die ausgewählte Zeile in der Tabelle. Der vollständige Datensatz wird seinerseits als Argument für den Aktionsbinder der Schaltfläche beim Aufrufen von Service3 verwendet. Bei diesem Service kann es sich um eine Methode handeln, die die in die Felder eingegebenen Werte aktualisiert. Wenn Sie detailliertere Erläuterungen zu den Datenobjekten, Datenbindern und Datenquellen benötigen, folgen Sie den weiter oben angegebenen Links.

Ein Web-Service-Java-Proxy in Ihrem Projekt anhand der bereitgestellten WSDL-Datei erstellen

Für die Arbeit mit dem auf einem Server ausgeführten Web-Service benötigt die Java-Anwendung einen Java-Proxy oder -Client für die Interaktion. Bei Verwendung einer WSDL-Datei können Sie mit Hilfe des Assistenten für Web-Service-Clients einen Java-Proxy im Java-Projekt generieren. Ihr Projekt 'MyDirectory' enthält die Datei EmployeeDirectory.wsdl, die Sie zum Generieren dieses Proxys verwenden. Nach dem Generieren des Java-Proxys können Sie eine Datenquelle erstellen, die den Web-Service darstellt, und mit dem Binden visueller Komponenten beginnen.

Wichtig: Bei der in dieser Übung verwendeten WSDL-Datei wird davon ausgegangen, dass der Web-Service in einer lokalen Installation von WebSphere Application Server implementiert und der Standardport für 'localhost' (http://localhost:9080) verwendet wurde. Wenn Sie die EAR-Datei auf andere Art und Weise implementiert haben, müssen Sie die WSDL-Datei zuerst entsprechend bearbeiten, bevor Sie fortfahren können.

Gehen Sie wie folgt vor, um den Web-Service-Java-Proxy in Ihrem Projekt zu generieren:

  1. Klicken Sie im Hauptmenü auf Datei > Neu > Andere, und wählen Sie den Assistenten Web-Services > Web-Service-Client aus. Falls die Kategorie 'Web-Services' nicht angezeigt wird, wählen Sie die Option Alle Assistenten anzeigen aus.
  2. Verwenden Sie den Assistenten, um den Web-Service-Client zu definieren:
    1. Geben Sie als Servicedefinition, die WSDL-Datei an, die in Ihrem MyDirectory-Projekt bereitgestellt ist: /MyDirectory/EmployeeDirectory.wsdl
    2. Wählen Sie im Feld Clienttyp die Option Java-Proxy aus.
    3. Stellen Sie die Schiebeleiste auf Client implementieren ein.
    4. Stellen Sie sicher, dass der Server und die Web-Service-Laufzeit für den von Ihnen verwendeten Server korrekt eingestellt sind. Dieses Lernprogramm wurde für WebSphere v6.0 und WebSphere v6.1 mit der IBM WebSphere JAX-RPC-Laufzeit getestet.
    5. Stellen Sie sicher, dass der Java-Proxy-Client an das Projekt 'MyDirectory' ausgegeben wird.

    Assistent 'Web-Service-Client'

  3. Klicken Sie auf Fertig stellen. Der Assistent für den Web-Service-Client generiert den Java-Proxy in einem neuen Paket (directory.service) in Ihrem Projekt.

Die employeesTable an ein Zeilendatenobjekt binden, das vom Web-Service zurückgegeben wird

Da die employeesTable die erste visuelle Komponente ist, die Sie in dieser Anwendung binden, müssen Sie eine Datenquelle erstellen, die auf den soeben dem Projekt hinzugefügten Beispiel-Web-Service-Proxy verweist. Wenn Sie in späteren Übungen weitere visuelle Komponenten binden, werden Sie diese Datenquelle wiederverwenden. In diesem Schritt fügen Sie die Web-Service-Datenquelle und das Datenobjekt 'lightEmployeeRecordRows' hinzu.

Gehen Sie wie folgt vor, um die Mitarbeitertabelle zu binden:
  1. Wählen Sie in der Sicht 'Java-Beans' oder in der Entwurfssicht die employeesTable aus. (Stellen Sie sicher, dass Sie nicht das übergeordnete JScrollPane-Element auswählen.) Daraufhin wird oben in der employeesTable im Entwurfsbereich eine kleine Registerkarte mit der Aufschrift Binden angezeigt.

    Registerkarte 'Binden' in JTable im grafischen Erstellungsbereich

  2. Klicken Sie auf die Registerkarte Binden in der employeesTable. Alternativ können Sie mit der rechten Maustaste auf die employeesTable klicken und die Option Binding-Eigenschaften auswählen.
  3. Da sich in der Anwendung keine Datenobjekte befinden, müssen Sie ein neues hinzufügen. Klicken Sie auf Neues Datenquellendatenobjekt.
  4. Wählen Sie im Feld Quellentyp den Wert Web-Service aus.
  5. Da Sie die Web-Service-Datenquelle noch nicht Ihrer Anwendung hinzugefügt haben, müssen Sie sie jetzt hinzufügen. Klicken Sie neben dem Feld Datenquelle auf die Schaltfläche ..., um das Dialogfenster 'Web-Service-Datenquelle hinzufügen' zu öffnen, in dem nach verfügbaren Web-Service-Clients oder Proxys in Ihrem Projekt gesucht wird.
  6. Wählen Sie den Web-Service 'EmployeeDirectory' aus, und klicken Sie danach auf 'Fertig stellen'. Der Datei DirectoryApp.java wird daraufhin eine neue Datenquelle hinzugefügt.

    Dialogfenster 'Web-Service-Datenquelle hinzufügen'

  7. Wählen Sie im Dialogfenster 'Neues Datenquellendatenobjekt' den Wert 'getLightEmployeeRecords()' im Feld 'Quellenservice' aus, und akzeptieren Sie den Standardnamen für das neue Datenobjekt: lightEmployeeRecordRows. Für diese Servicemethode sind keine Parameter erforderlich. Klicken Sie auf 'OK'. Das neue Datenobjekt wird erstellt und im unformatierten Bereich der Entwurfssicht angezeigt.

    Dialogfenster 'Neues Datenquellendatenobjekt'

    Tipp: Da Sie eine Tabelle binden, werden im Dialogfenster 'Neues Datenquellendatenobjekt' nur Services angezeigt, die Zeilendatenobjekte zurückgeben. Im vorliegenden Fall ist die Methode getLightEmployeeRecords() der einzige verfügbare Service, der einen Array von Objekten zurückgibt.
  8. Wählen Sie im Dialogfenster 'Tabellen-Daten-Bindings' das Datenobjekt 'lightEmployeeRecordRows' aus.
  9. Nun müssen Sie die Eigenschaften des Datenobjekts 'lightEmployeeRecordRows' auswählen, die in employeesTable angezeigt werden sollen:

    Dialogfenster 'Tabellen-Daten-Bindings'

    1. Klicken Sie auf die Schaltfläche mit dem Doppelpfeil Schaltfläche 'Doppelpfeil', um alle Objekteigenschaften der Liste Tabellenspalten hinzuzufügen.
    2. Verwenden Sie den Aufwärts- und den Abwärtspfeil, um die Spalten in der folgenden Reihenfolge von oben nach unten anzuordnen: lastName, firstName, email, employeeID
    3. Benennen Sie die Spaltentitel folgendermaßen um: Nachname, Vorname, E-Mail, Mitarbeiter-ID
      Tipp: Nach dem Binden der Tabelle können Sie jederzeit zu den Binding-Eigenschaften zurückkehren und die Spalten erneut umbenennen oder neu anordnen.
    4. Klicken Sie auf OK.
Die employeesTable ist nun unter Verwendung eines JRowTableBinder an das Datenobjekt 'lightEmployeeRecordRows' gebunden. Wenn Sie im unformatiert Bereich auf das Datenobjekt 'lightEmployeeRecordRows' klicken, zeichnet der Visual Editor eine Linie vom Datenobjekt zur Tabelle. Der JRowTableBinder wird auf dieser Linie durch das Tabellenbindersymbol Tabellenbindersymbol dargestellt. Eine weitere Linie gibt an, dass das Datenobjekt die webServiceDataSource als Datenquelle verwendet.

Ansicht der Binderlinien für JTable

Prüfpunkt für die Lerneinheit

Beachten Sie die Änderungen am Projekt und an der Anwendung. In dieser Lerneinheit haben Sie die Web-Service-Datenquelle, ein Zeilendatenobjekt und einen Binder hinzugefügt, der die employeesTable an das Zeilendatenobjekt bindet.

Überprüfen Sie das neue Paket (jve.generated), das im Projekt erstellt wurde und alle vom Java Visual Editor generierten Binderklassen enthalten soll. Beachten Sie darüber hinaus das neue Paket (directory.service), das den Java-Proxy für den Web-Service enthält. Beschreiben Sie oder fassen Sie zusammen, was Sie in dieser Lerneinheit gelernt haben.

Pakete im Projekt 'MyDirectory'

Wenn Sie die Anwendung 'My Company Directory' jetzt ausführen, wird die Mitarbeitertabelle vom Web-Service mit den vorhandenen Mitarbeiterdatensätzen gefüllt.

< Vorherige Lektion | Nächste Lektion >