< Zurück | Weiter >

Lerneinheit 1: EGL-Webprojekt für den Service erstellen

EGL-Projekte können als Services, gleichzeitig als Clients oder als Services und Clients fungieren. Für dieses Lernprogramm erstellen Sie zwei Projekte: ein Projekt als Service und ein Projekt als Client. Obwohl Sie den gesamten Code in ein einziges EGL-Projekt stellen können, veranschaulicht die Verwendung von zwei Projekten, wie EGL in einer anderen Anwendung Services aufrufen kann.

So geht's

  1. Optional können Sie einen separaten Arbeitsbereich während der Arbeit mit dem Lernprogramm verwenden, um eine Beeinträchtigung Ihrer anderen Projekte zu vermeiden. Wenn Sie einen anderen Arbeitsbereich verwenden möchten, führen Sie die folgenden optionalen Schritte aus:
    1. In der Workbench klicken Sie auf Datei > Arbeitsbereich wechseln. Das Fenster 'Startprogramm für Arbeitsbereich' wird geöffnet.
    2. Geben Sie im Feld Arbeitsbereich eine neue Arbeitsbereichsposition ein.
    3. Klicken Sie auf OK. Die Workbench wird unter Verwendung der neuen Arbeitsbereichsposition erneut geöffnet. Sie können die Arbeitsbereichspositionen jederzeit umschalten, und Sie können so viele Arbeitsbereichspositionen haben, wie Sie möchten.
  2. Wechseln Sie zur Webperspektive:
    1. Klicken Sie auf die Optionen Fenster > Perspektive öffnen > Andere.
    2. Klicken Sie in der Liste der Perspektive auf Web. Wenn die Webperspektive nicht angezeigt wird, wählen Sie das Kontrollkästchen Alle anzeigen aus.
    3. Klicken Sie auf OK.
  3. Stellen Sie sicher, dass EGL so eingerichtet ist, dass Implementierungsdeskriptoren automatisch generiert werden. Deploymentdeskriptoren enthalten Informationem, die beschreiben, wie EGL-Services für andere Anwendungen verfügbar gemacht werden und wie EGL-Anwendungen Services finden, die von anderen Anwendungen zur Verfügung gestellt werden.
    1. In der Workbench klicken Sie auf Fenster > Einstellungen... > EGL.
    2. Stellen Sie unter Standardauswahlmöglichkeiten für EGL-Projektkomponenten sicher, dass EGL-Implementierungsdeskriptor erstellen ausgewählt ist. Falls nicht, klicken Sie auf dieses Feld um den Implementierungsdeskriptor auszuwählen.
    3. Klicken Sie auf OK.
  4. Klicken Sie in der Workbench auf die Optionen Datei > Neu > Projekt.
  5. Im Fenster 'Neues Projekt' erweitern Sie EGL und klicken auf EGL-Projekt. Wenn EGL-Projekt nicht angezeigt wird, wählen Sie das Kontrollkästchen Alle anzeigen aus. Sollte die Kategorie EGL oder EGL-Projekt immer noch nicht angezeigt werden, wird EGL auf dem System nicht installiert. Führen Sie die Produktinstallation erneut durch, und wählen Sie dabei für EGL den Punkt Zusätzliche Komponente aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie im Feld Projektname dem Projekt den folgenden Namen:
    EGLService
  8. Klicken Sie unter EGL-Projekttypen auf die Option Webprojekt. Diese Projekttyp erlaubt die Verwendung von Benutzerschnittstellen für Webseiten.
  9. Klicken Sie auf Weiter.
  10. Wählen Sie unter Ziellaufzeit die Option WebSphere Application Server Version 6.1 aus.
  11. Stellen Sie sicher, dass die Option Neuen Erstellungsdeskriptor erstellen ausgewählt ist. Build-Deskriptoren enthalten Optionen zur Generierung des Programms in einer anderen Sprache. Darum müssen Sie sich jedoch jetzt nicht kümmern, da der Assistent automatisch einen geeigneten Build-Deskriptor erstellt. Sie müssen die erweiterten Einstellungen nur verwenden, wenn Sie WAS einsetzen und vorher die Standardeinstellung geändert haben, mit der das Projekt einer EAR (Enterprise Application Resource) hinzugefügt wird. Beim Einsatz von WAS muss das Projekt EGLService zu einer EAR gehören. Die Workbench speichert diese Einstellung.
  12. Möglicherweise werden Sie in einem Fenster gefragt, ob Sie zur J2EE-Perspektive wechseln möchten. Falls dieses Fenster angezeigt wird, klicken Sie auf Nein.
In der Sicht 'Projektexplorer' wird das neue Projekt angezeigt.
Sicht 'Projektexplorer' mit dem neuen Projekt

Schnittstelle zur Definition des Service erstellen

Bei EGL wird der Begriff der Schnittstelle ("Interface") in der gleichen Bedeutung wie in objektorientierten Sprachen verwendet. Für EGL definiert eine Schnittstelle einen Plan, den ein Service befolgen muss. Genauer gesagt, enthält eine Schnittstelle mindestens einen Funktionsprototyp oder Zusammenfassungen von Funktionen. Diese Prototypen sind selbst keine verwendbaren Funktionen, sondern sie enthalten Pläne für tatsächliche Funktionen.
Angenommen, Sie müssen eine Anwendung schreiben, die mathematische Operationen ausführt wie ein Taschenrechner. Sie können beginnen, indem Sie alle mathematischen Operationen auflisten, die Ihre Anwendung benötigt (z. B. Addition, Subtraktion und Multiplikation), ohne den Code zu schreiben, der diese Operationen ausführt. Sie benennen also in diesem Fall die einzelnen Operationen und geben ihre Ein- und Ausgabeparameter an, codieren jedoch zu Beginn keinerlei Logik. Somit listen Sie die Funktionen auf, die die EGL-Serviceanwendung in einer Schnittstelle benötigt. Eine solche Schnittstelle kann z. B. wie folgt aussehen:
interface myCalculatorInterface

  //Funktion zur Addition von Zahlen 
  function addNumbers(number1 decimal(10,2) in, 
    number2 decimal(10,2) in) returns (decimal(10,2));

  //Funktion zur Subtraktion von Zahlen
  function subtractNumbers(number1 decimal(10,2) in, 
    number2 decimal(10,2) in) returns (decimal(10,2));

end

Danach können Sie mit der Codierung des Service beginnen, und Sie können dabei diese Schnittstelle sowohl als Ausgangspunkt als auch als Testmöglichkeit verwenden, um sicherzustellen, dass Sie Ihrem Plan tatsächlich folgen.

Es kommt selten vor, dass Sie eine Schnittstelle schreiben müssen, die Verwendung von Schnittstellen zur Beschreibung der Services ist allgemein eine gutes Verfahren für die Programmierung:
  • Anhand der Schnittstelle können Sie den Service im voraus planen, und EGL warnt sie, wenn der Service von der Schnittstellendefinition abweicht.
  • Schnittstellen stellen eine präzise Zusammenfassung eines Service dar. Sie erläutern, was der Service ausführen kann, ohne jedes Implementierungsdetail des Service anzugeben.
  • Schnittstellen können als Anforderungen für die Entwicklung oder für die Kompatibilität dienen.
  1. Klicken Sie in der Sicht 'Projektexplorer' mit der rechten Maustaste auf das Projekt EGLService, um es auszuwählen.
  2. Klicken Sie auf Neu > Andere.
  3. Erweitern Sie im Fenster Neu den Eintrag EGL, und klicken Sie auf Schnittstelle. Stellen Sie sicher, dass Sie das Element Schnittstelle unter EGL und nicht unter Java verwenden.
  4. Klicken Sie auf Weiter.
  5. Prüfen Sie im Fenster Neuer EGL-Schnittstellenabschnitt, ob der Ordner EGLSource des Projekts im Feld Quellenordner angezeigt wird. Dieses Feld sollte EGLService\EGLSource enthalten.
  6. Geben Sie in das Feld Paket den folgenden Namen ein:
    interfaces
    EGL erstellt dieses neue Paket, da das Projekt noch kein Paket mit diesem Namen enthält.
  7. Geben Sie in das Feld Name der EGL-Quellendatei den folgenden Namen für die neue Schnittstelle ein:
    HelloInterface
    Das Fenster Neuer EGL-Schnittstellenabschnitt sollte nun wie folgt aussehen:
    Fenster 'Neuer EGL-Schnittstellenabschnitt'
  8. Klicken Sie auf Fertig stellen. Die neue Schnittstelle wird erstellt und im EGL-Editor geöffnet. Diese Schnittstelle enthält bereits einen Funktionsprototyp als Beispiel:
    function functionName(parameterName string in) returns (int);
  9. Löschen Sie diesen Funktionsprototyp.
  10. Fügen Sie an der Stelle, an der sich der Musterprototyp befunden hat, den folgenden Code für Ihren eigenen Funktionsprototyp ein:
    function SayHello(name string in, city string in) returns (string);
  11. Speichern und schließen Sie die Datei.
Im Folgenden finden Sie technische Details zum Code, den Sie gerade eingegeben haben:
  • Wie bereits oben erläutert, ist dies keine vollständige EGL-Logik. Stattdessen beschreibt dieser Funktionsprototyp eine Funktion, die sich im Service befinden soll. Im vorliegenden Fall beschreibt der Prototyp eine Funktion mit dem Namen SayHello.
  • Die Funktion nimmt vom Client zwei Eingaben entgegen. Diese Eingaben werden als Parameter bezeichnet:
    • Eine Zeichenfolgevariable für den Namen einer Person
    • Eine Zeichenfolgevariable für den Namen eines Orts
    Die Funktion verwendet diese Parameter zur Erstellung einer Ausgabe, die an den Client zurückgegeben werden soll.
  • Der Code returns (string) gibt diesen Rückgabewert sowie dessen Typ an.

Die Schnittstelle sollte nun wie folgt aussehen:

Code des EGL-Schnittstellenabschnitts

Service erstellen

  1. Klicken Sie in der Sicht 'Projektexplorer' mit der rechten Maustaste auf das Projekt, und klicken Sie anschließend auf die Optionen Neu > Service.
  2. Prüfen Sie im Fenster Neuer EGL-Serviceabschnitt, ob der Ordner EGLSource des Projekts im Feld Quellenordner angezeigt wird. Dieses Feld sollte EGLService\EGLSource enthalten.
  3. Geben Sie in das Feld Paket den folgenden Namen ein:
    services
  4. Geben Sie in das Feld Name der EGL-Quellendatei den folgenden Namen für den neuen Service ein:
    HelloService
  5. Klicken Sie neben Implementierte Schnittstellen auf die Option Hinzufügen.
  6. Geben Sie einen Stern * in das Feld Ausgewählte Schnittstellen ein. Die Schnittstelle wird in der Liste Passende Abschnitte angezeigt.
  7. Klicken Sie in der Liste Passende Abschnitte auf HelloInterface, um dies auszuwählen.
  8. Klicken Sie auf OK. Die Schnittstelle wird nun in der Liste Implementierte Schnittstellen angezeigt.
  9. Wählen Sie das Kontrollkästchen Als Web-Service erstellen aus. Wenn Sie dieses Kontrollkästchen auswählen, werden der Implementierungsdeskriptordatei Implementierungsinformationen hinzugefügt. Das Fenster Neuer EGL-Serviceabschnitt sieht nun wie folgt aus:
    Assistent 'Neuer EGL-Serviceabschnitt'
  10. Klicken Sie auf Fertig stellen. Der neue Service wird erstellt und im EGL-Editor geöffnet. Der Service enthält bereits eine Musterfunktion, die auf dem Prototyp in der Schnittstelle basiert.
  11. Entfernen Sie den Kommentar // TODO Auto-generated function, und geben Sie an seiner Stelle den folgenden Code ein:
    ReturnString string;
    ReturnString = name::", willkommen in "::city::"!";
    return (ReturnString);
    Dieser Code erstellt eine Zeichenfolgevariable und ordnet diese auf der Basis der Parameter einem Wert zu, z. B. "Peter, willkommen in Hamburg!" Der Code :: ist ein Verknüpfungsoperator, der separate Zeichenfolge zu einer einzigen Zeichenfolge verknüpft. Der Code sollte nun wie folgt aussehen:
    Code des EGL-Serviceabschnitts
  12. Speichern und schließen Sie die Datei.
< Zurück | Weiter >