WebFacing-Anwendungen in andere Webanwendungen integrieren

WebFacing-Anwendungen können aus anderen Webanwendungen heraus programmatisch aufgerufen werden. Auf diese Weise ist es möglich, mit WebFacing generierte Benutzerschnittstellen in vorhandene Webanwendungen zu integrieren.

WebFacing-Anwendungen werden mit Hilfe von URL-Adressen gestartet. Normalerweise wird eine URL-Adresse als Link dargestellt, den ein Benutzer anklickt, um die Anwendung zu starten. Während der WebFacing-Konvertierung werden URL-Adressen in eine Datei index.jsp geschrieben. Nach der Implementierung der Anwendung sind dies die Links, die Benutzer anklicken, um die Anwendung zu starten. WebFacing-URL-Adressen können jedoch auch dynamisch durch andere Programme (z. B. Controller-Servlets) erstellt werden. Diese URL-Adressen könnten als Links, die auf einer Webseite angeklickt werden, an Benutzer zurückgesendet werden. Wichtiger ist jedoch, dass sie in forward()- und sendRedirect()-Methoden in anderen Webanwendungen verwendet werden können. Werden dynamisch bestimmte WebFacing-URL-Adressen mit forward()- und sendRedirect()-Methoden verwendet, bedeutet dies, dass ein Programm wie z. B. ein Controller-Servlet folgende Aktionen ausführen kann: Den zu verwendenden Host, das zu startende WebFacing-Programm, den für das WebFacing-Programm zu verwendenden CL-Befehl bestimmen usw. Nach Ausführung dieser Aktionen kann das Servlet die entsprechende WebFacing-Anwendung, deren Parameter bereits definiert sind, direkt einem Benutzer zur Verfügung stellen.

Bei einem gesteuerten WebFacing-Aufruf ist es auch möglich, alternative Authentifizierungsmethoden zu verwenden. Die gesamte Benutzerauthentifizierung kann jetzt in einem angepassten Servlet ausgeführt werden, bevor WebFacing aufgerufen wird. Das verwendete Authentifizierungsverfahren muss in der Lage sein, der WebFacing-Anwendung iSeries-Benutzerberechtigungen zur Verfügung zu stellen, damit sie auf iSeries-Ressourcen zugreifen kann.

Ein einfaches Beispiel für die Bestimmung des CL-Befehls, der zum Starten eines Programms verwendet werden soll:

Durch ein Controller-Servlet erstellte URL-Adresse:
WFInvocation.do?clcmd=call%20ordentr
In diesem Beispiel ist ordentr der Name eines zu startenden Programms. Der Wert ordentr könnte durch ein Servlet bestimmt und einer Variable wie z. B. iseriesProgram zugeordnet werden. Ihr Servlet könnte die Zeichenfolge der URL-Adresse mit dem für iseriesProgram bestimmten Wert erstellen und sie mit folgender Zeile der Variable newURL zuordnen:
newURL = "WFInvocation.do?clcmd=call " + iseriesProgram;
newURL könnte dann als Weiterleitungs- oder Umleitungs-URL-Adresse für Ihre forward()- oder sendRedirect()-Methoden verwendet werden.
In diesem Beispiel sieht die vollständige, vom Browser verwendete URL-Adresse wie folgt aus, wenn sie als Umleitung gesendet wird:
http://<Hostname>:<Port>/<Anwendung>/WFInvocation.do?clcmd=call%20ordentr

Das Beispiel zeigt die vollständige URL-Adresse, die mit http://<Hostname>:<Port>/<Anwendung>/ beginnt. Der Wert für newURL ist die Zeichenfolge, die sich daran anschließt. Das heißt die Zeichenfolge WFInvocation.do?clcmd=call%20ordentr. In diesem Beispiel gibt der erste Teil der URL-Adresse (http://<Hostname>:<Port>/<Anwendung>/) den Host, den Port und das Kontextstammverzeichnis für die Anwendung an. Befindet sich Ihr Controller-Servlet in demselben Kontextstamm, muss das Servlet nicht immer die vollständige URL-Adresse bestimmen. Falls erforderlich, könnten Sie jedoch im Servlet angeben, dass eine Zeichenfolge für die vollständig qualifizierte URL-Adresse erstellt wird.

Anmerkung: Die Zeichen %20 in der URL-Adresse geben ein Leerzeichen an, wie es beim Senden an einen Browser codiert wird. Leerzeichen können normalerweise nicht explizit in URL-Adressen verwendet werden. In dem Beispiel, in dem die Zeichenfolge der URL-Adresse erstellt und newURL zugeordnet wird, erscheint das Leerzeichen in der Zeichenfolge unmittelbar hinter clcmd=call. Der Grund dafür, dass das Leerzeichen in der Zeichenfolge enthalten ist, besteht darin, dass das Beispiel einen CL-Befehl call ordentr darstellt. In der erstellten Zeichenfolge der URL-Adresse muss %20 nicht explizit hinzugefügt werden. Der Server fügt diese Codierung bei Bedarf hinzu.

URL-Parameter, die dynamisch bestimmt werden können

clcmd
CL-Befehl zum Starten des Programms.
host
Name des Hosts, auf dem sich die ursprüngliche 5250-Anwendung befindet.
userid
Für die Anmeldung bei der Anwendung verwendete Benutzer-ID. Anmerkung: Wird eine forward()-Methode in Ihrem Controller-Servlet verwendet, werden URL-Parameter nur in der Anwendungsserverschicht (Mittelschicht) gesendet. Bei Verwendung von sendRedirect() werden dagegen URL-Parameter dem Browser preisgegeben. Daher ist sendRedirect() weniger sicher, weil Informationen wie Benutzer-IDs und Kennwörter in einem Browseradressfeld oder wenn ein Benutzer die Merkmale der verwendeten Seite anzeigt enthüllt werden können.
password
Für die Anmeldung bei der Anwendung verwendetes Kennwort. Anmerkung: Wird eine forward()-Methode in Ihrem Controller-Servlet verwendet, werden URL-Parameter nur in der Anwendungsserverschicht (Mittelschicht) gesendet. Bei Verwendung von sendRedirect() werden dagegen URL-Parameter dem Browser preisgegeben. Daher ist sendRedirect() weniger sicher, weil Informationen wie Benutzer-IDs und Kennwörter in einem Browseradressfeld oder wenn ein Benutzer die Merkmale der verwendeten Seite anzeigt enthüllt werden können.
inv
Der Aufrufname für den WebFacing-CL-Befehl, mit dem die Anwendung gestartet wird. Sind Werte wie host, user ID und password für einen CL-Befehl definiert, überschreiben diese Werte die für ein Projekt angegebenen allgemeinen Werte. Soll der Aufrufname für einen CL-Befehl angezeigt werden, öffnen Sie die WebFacing-Perspektive in der Workbench, klicken auf die Indexzunge WebFacing-Projekte, erweitern Ihr WebFacing-Projekt, dann den Ordner CL-Befehle und klicken die Befehlsbezeichnung an. Der Wert für den Aufrufnamen kann im Teilfenster Merkmale angezeigt werden. (Wird das Teilfenster "Merkmale" in der WebFacing-Perspektive nicht angezeigt, klicken Sie Fenster > Sicht anzeigen > Merkmale an, um es zu öffnen.) Um den Aufrufnamen zu editieren, klicken Sie mit der rechten Maustaste den CL-Befehl in der Sicht WebFacing-Projekte an, und wählen Sie Merkmale aus.

Befehle für programmgestützten Aufruf filtern

Sie können die Präfixe für CL-Befehle, die für den programmgestützten Aufruf zulässig sind, über den Parameter clcmd angeben. Bei programmgestützten Aufrufen, die den Parameter clcmd verwenden und einen Wert angeben, der nicht mit einem von Ihnen zugelassenen Präfix beginnt, wird die Ausführung verhindert. Standardmäßig sind keine programmgestützten Aufrufe zulässig, die den auszuführenden CL-Befehl überschreiben.

Bei der Migration von Projekten aus dem WebFacing-Plug-in Version 5.1.2.2 und früher nach Version 6 wird der Sonderwert *ALL eingefügt, damit alle CL-Befehle ausgeführt werden können.

<context-param>
	<param-name>WFCLCMDAllowed0</param-name>
	<param-value>*ALL</param-value>
</context-param>

Wird der Parameter clcmd nicht verwendet oder sind die verwendeten Werte für clcmd bekannt, sollten Sie den Wert *ALL entfernen und die Werte wie unten angegeben bereitstellen.

Um anzugeben, welche Befehlspräfixe erlaubt sind, editieren Sie die Quelle der Datei web.xml für Ihre WebFacing-Anwendung. Fügen Sie Parameternamen hinzu, die aus WFCLCMDAllowed gefolgt von zusätzlichem Text bestehen, um die einzelnen Parameter vorneinander zu unterscheiden. Fügen Sie dann für jeden Parameter einen Wert hinzu, um den Befehl anzugeben, der ausgeführt werden darf. Im folgenden Beispiel sind alle Befehle zulässig, die mit CALL MYCMD und GO MYMENU beginnen.

<context-param>
	<param-name>WFCLCMDAllowed0</param-name>
	<param-value>GO MYMENU</param-value>
	<param-name>WFCLCMDAllowed1</param-name>
	<param-value>CALL MYCMD</param-value>
</context-param>

Stellen Sie nach Bedarf zusätzliche Kontextparameter mit den erforderlichen Werten bereit.

Dadurch werden clcmd-Werte wie beispielsweise CALL MYCMDisOK oder CALL MYCMD PARAM(ONE) zugelassen, während Werte wie beispielsweise CALL MY oder CALL OTHERCMD nicht zugelassen werden. Auch bei GO MYMENU gilt, dass zulässige Befehle mit der angegebenen Zeichenfolge beginnen müssen. Beim Vergleichen wird Groß-/Kleinschreibung nicht beachtet.

Anmerkung: Dies betrifft nur das programmgestützte Aufrufen mit dem Parameter clcmd. WebFacing-Aufrufe unter Verwendung des Parameters inv sind davon nicht betroffen.

Beispiel-URL-Adressen

WFInvocation.do?clcmd=call%20ordentr
CL-Befehl call ordentr wird durch die URL-Adresse übergeben. Host, Benutzer-ID und Kennwort in der Implementierungsdeskriptordatei web.xml werden verwendet. Benutzer nur zur Anmeldung auffordern, wenn Benutzer-ID oder Kennwort fehlt oder Eingabeaufforderung angegeben ist. Fehlernachricht ausgeben, wenn Benutzer-ID oder Kennwort nicht korrekt ist.
WFInvocation.do?inv=INV1
Host, Benutzer-ID, Kennwort und CL-Befehl werden aus der Implementierungsdeskriptordatei web.xml abgerufen. Aufrufname des CL-Befehls ist INV1. Eingabeaufforderung nur, wenn Benutzer-ID oder Kennwort fehlt oder Eingabeaufforderung angegeben ist. Fehlernachricht ausgeben, wenn Benutzer-ID oder Kennwort nicht korrekt ist.
WFInvocation.do?inv=INV1&host=ISERIES1&userid=WEBFACING&password=WEBFACING
Aufrufname des CL-Befehls ist INV1. Host, Benutzer-ID und Kennwort werden durch die URL-Adresse übergeben. Mehrere Parameter werden durch & getrennt.
WFInvocation.do?clcmd=call%20ordentr&host=ISERIES1&userid=WEBFACING&password=WEBFACING
CL-Befehl call ordentr wird durch die URL-Adresse übergeben. Host, Benutzer-ID und Kennwort werden durch die URL-Adresse übergeben. Mehrere Parameter werden durch & getrennt.
Vollständig qualifiziertes Beispiel

http://<Hostname>:<Port>/<Anwendung>/WFInvocation.do?clcmd=call%20ordentr&host=ISERIES1&userid=WEBFACING&password=WEBFACING

Anmerkung: In diesem Beispiel beziehen sich <Hostname> und <Port> auf den Hostnamen und den Port des Anwendungsservers, auf dem die WebFacing-Anwendung implementiert ist. <Anwendung> ist das Kontextstammverzeichnis für die implementierte Anwendung. Das Beispiel zeigt die folgenden Werte, die durch die URL-Adresse übergeben werden: Der CL-Befehl lautet call ordentr. Der Host, auf dem sich die 5250-Anwendung befindet, heißt ISERIES. Die Benutzer-ID lautet WEBFACING. Das Kennwort lautet WEBFACING. Mehrere Parameter werden durch & getrennt.

Servlet-Methoden für einen programmatischen Aufruf einer WebFacing-Anwendung

Es gibt zwei Servlet-Methoden, um eine WebFacing-Anwendung programmatisch aufzurufen. Im Einzelnen sind dies:
  • forward() -- Die forward()-Methode befindet sich in der Klasse javax.servlet.RequestDispatcher.
  • sendRedirect() -- Die sendRedirect()-Methode befindet sich in der Klasse javax.servlet.http.HttpServletResponse.
Die wichtigsten Unterschiede zwischen diesen beiden Methoden sind in folgender Tabelle aufgeführt:
forward()-Methode von javax.servlet.RequestDispatcher sendRedirect()-Methode von javax.servlet.http.HttpServletResponse
Ein serverseitiger Aufruf. Diese Methode ruft die andere Ressource auf, ruft ihre Ausgabe ab und gibt sie an den Client zurück. Sendet den HTTP-Statuscode 302 an den Browser. Der Browser stellt die Verbindung zur URL-Adresse der Ressource automatisch wieder her. In diesem Fall weiß der Browser, dass die Ausgabe von der anderen Ressource stammt.

Feedback