Die HTTP-Tunnelung ermöglicht Clients, die sich außerhalb einer Firewall befinden, alle Informationen, die der clientseitige
Object Request Broker (ORB) benötigt, um Anforderungen an den serverseitigen ORB zu senden, in einer normalen HTTP-Anforderung zu bündeln.
Diese Anforderung kann dann wie jede andere HTTP-Anforderung an den Server an Port 80 gesendet werden.
Vorbereitende Schritte
Stellen Sie sicher, dass der clientseitige ORB ein IBM ORB ist.
Die Tunnelung funktioniert nicht, wenn Sie auf dem Client einen ORB verwenden, der nicht von IBM stammt.
Außerdem muss für die Tunnelung die SSL-Sicherheit (Secure
Sockets Layer) aktiviert sein. Stellen Sie sicher, dass die erforderlichen Zertifikate und Schlüsseldateien konfiguriert sind.
Informationen zu diesem Vorgang
Manchmal müssen Clients, die sich außerhalb einer Firewall befinden, mit Modulen, wie z. B. EJB-Modulen,
kommunizieren, die sich auf einem Server innerhalb der Firewall befinden.
Die clientseitigen und serverseitigen ORBs verwalten diese Interaktion zwischen dem Client und dem Server.
Normalerweise blockieren Firewalls die Ports, die ein Client verwendet, um mit dem serverseitigen ORB zu kommunizieren.
Wenn in Ihrer Installation eine Firewall verwendet wird, die die Ports, die ein Client für die Kommunikation mit dem serverseitigen ORB verwendet, blockiert,
müssen Sie deshalb die HTTP-Tunnelung konfigurieren.
Das Servlet "IIOPTunnelServlet", das mit dem Produkt als Klassendatei "com.ibm.CORBA.services.IIOPTunnelServlet.class"
bereitgestellt wird, ermöglicht einem HTTP-Client, wie z. B. einem Java-Client, der in RMI-IIOP eingebettet ist,
die Kommunikation mit einem Server, der sich innerhalb einer Firewall befindet.
Diese Klassendatei ist zusammen mit den folgenden drei Klassendateien in der Datei
WAS_HOME/plugins/com.ibm.ws.runtime_9.0.jar gebündelt.
Diese zusätzlichen Klassendateien erweitern die Funktionalität des Servlets.
- com.ibm.CORBA.services.redirector.ConnectionStream.class com.ibm.CORBA.services.redirector.Redirector.class
com.ibm.CORBA.services.redirector.RedirectorController.class
Wenn die Tunnelung aktiviert ist, empfängt das Servlet "IIOPTunnelServlet" auf dem Server die HTTP-Anforderung und entpackt alle ORB-Informationen.
Anschließend ruft das Servlet den serverseitigen ORB für den Client auf.
Der serverseitige ORB behandelt die Anforderung wie jede normale ORB-Anforderung und antwortet dem Servlet.
Das Servlet packt die Antwort des ORB in eine HTTP-Anforderung und sendet sie über die Firewall an den clientseitigen ORB.
Der clientseitige ORB entpackt die HTTP-Antwort und extrahiert die Antwort.
Die Tunnelung funktioniert mit HTTPS genauso wie mit HTTP. Deshalb können Sie die SSL-Sicherheit (Secure
Sockets Layer) verwenden, um Ihre Tunnelungsclients zu schützen, wenn Ihre Sicherheitsprozeduren erfordern, dass jede Kommunikation mit Ihren Servern über SSL gesichert wird.
- Erstellen Sie eine installierbare Datei "IIOPTunnel.ear", die das Servlet "IIOPTunnelServlet" enthält.
Damit Sie das Servlet "IIOPTunnelServlet" auf dem Server ausführen können, müssen Sie es einer Anwendung hinzufügen, die
Sie auf dem Server installieren können.
Zum Erstellen einer installierbaren Datei "IIOPTunnel.ear", die dieses Servlet enthält, können Sie ein Anwendungsassembliertool verwenden.
Gehen Sie beispielsweise wie folgt vor, wenn Sie das mit dem Produkt gelieferte Assembliertool verwenden:
- Starten Sie das Tool.
- Öffnen Sie die Perspektive "WEB".
- Klicken Sie in der Sicht "Projektexplorer" mit der rechten Maustaste auf ein leeres Teilfenster, und wählen Sie
Neu > Dynamisches Webprojekt aus.
- Ändern Sie im Assistenten "Dynamisches Webprojekt erstellen" den Projektnamen in
"IIOPTunnel" oder einen anderen Namen, der Ihnen sinnvoll erscheint. Standardmäßig ist die Option
Modul zu einem EAR-Projekt hinzufügen ausgewählt, "IIOPTunnelEAR" als Name für das EAR-Projekt und "IIOPTunnel" als Kontextstammverzeichnis festgelegt.
- Übernehmen Sie diese Standardeinstellungen, und klicken Sie auf
Fertig stellen.
- Fügen Sie die Datei "com.ibm.ws.runtime_9.0.jar" dem Erstellungspfad des Webprojekts hinzu.
Damit Sie das neue Servlet im Webimplementierungsdeskriptor registrieren können, müssen Sie das
Servlet "IIOPTunnelServlet", das sich in der Datei WAS_HOME/lib/plugins/com.ibm.ws.runtime_9.0.jar befindet, dem Erstellungspfad hinzufügen.
- Klicken Sie mit der rechten Maustaste auf das Webprojekt "IIOPTunnel", und wählen Sie anschließend Eigenschaften > Java-Erstellungspfad aus.
- Wählen Sie das Register "Bibliotheken" aus, und klicken Sie anschließend auf die Schaltfläche "Externe JARs hinzufügen".
- Fügen Sie die Datei "com.ibm.ws.runtime_9.0.jar" hinzu, und klicken Sie auf OK.
- Exportieren Sie Ihre EAR-Datei.
- Klicken Sie mit der rechten Maustaste auf das Projekt "IIOPTunnelEAR".
- Klicken Sie auf Exportieren > EAR-Datei. Navigieren Sie zum ausgewählten Zielverzeichnis, und geben Sie
"IIOPTunnel.ear" bzw. den Namen, den Sie in Schritt 1d angegeben haben, als Namen der EAR-Datei an.
- Klicken Sie auf Fertigstellen.
Sie erhalten eine Datei "IIOPTunnel.ear", die Sie implementieren können.
- Installieren Sie die Datei "IIOPTunnel.ear" in Ihrem Zielanwendungsserver. Sie können während der Installation alle Standardwerte übernehmen.
Denken Sie daran, die Einstellung
"tunnelAgentURL" auf dem Client an die tatsächliche Position des Servlets "IIOPTunnelServlet" auf Ihrem Server anzupassen.
Ausführliche Erläuterung des URL-Tunnelformats: http(s)://Hostname:Port/Kontextstammverzeichnis/Zuordnung_des_Servlet-URL
Hostname:Port steht für die Hostname/Port-Kombination, die dem Server
zugeordnet ist, auf dem sich das Servlet "IIOPTunnelServlet" befindet.
Der Port kann je nach Sicherheitsanforderungen ein HTTP- oder ein HTTPS-Port sein.
Die Werte für Kontextstammverzeichnis und Zuordnung_des_Servlet-URL müssen mit den Werten
übereinstimmen, die für die Elemente "context-root" und "servlet-URLmapping" in der Datei "web.xml" des Servlets definiert wurden.
Wenn das Servlet beispielsweise auf dem Standardserver installiert ist und
"context-root=iioptunnel" und "Servlet-URLmapping=tunnel" definiert sind, muss der folgende
URL für "tunnelAgentURL" auf dem Client angegeben werden:
http://localhost:9080/IIOPTunnel/IIOPTunnelServlet
Wenn Sie überprüfen möchten, ob das Servlet
implementiert wurde und erfolgreich ausgeführt wird, können Sie einen Browser öffnen und "http:// hostname:9080/iioptunnel/tunnel" aufrufen.
Wenn das Servlet funktioniert, versucht der Browser, das Servlet wie eine normale Datei herunterzuladen.
Sie können den Download abbrechen.
- Überprüfen Sie, ob das Servlet implementiert wurde und erfolgreich ausgeführt wird.
Wenn Sie überprüfen möchten, ob das Servlet
implementiert wurde und erfolgreich ausgeführt wird, können Sie einen Browser öffnen und "http:// hostname:9080/IIOPTunnel/IIOPTunnelServlet" aufrufen.
Wenn das Servlet funktioniert, versucht der Browser, das Servlet wie eine normale Datei herunterzuladen.
Sie können den Download einfach abbrechen.
Geben Sie die folgenden Parameter an, wenn bei der Implementierung und Ausführung des Servlets ein Problem auftritt:
-Dcom.ibm.CORBA.TunnelAgentURL=https://localhost:9080/IIOPTunnel/IIOPTunnelServlet?debug=true
- Konfigurieren Sie den ORB-Service für den clientseitigen ORB, um die Tunnelung zu aktivieren.
Der Client bestimmt, welche IIOP- und HTTP-Standardtunnelung für die Kommunikation mit dem serverseitigen ORB verwendet wird.
Deshalb müssen Sie auf dem Client die folgenden ORB-Eigenschaften definieren.
com.ibm.CORBA.ForceTunnel=ALWAYS
com.ibm.CORBA.TunnelAgentURL=http://Hostname:9080/IIOPTunnel/IIOPTunnelServlet com.ibm.CORBA.FragmentSize=0
Zur Aktivierung der Tunnelung im Client-ORB
muss die Eigenschaft "com.ibm.CORBA.ForceTunnel" auf
ALWAYS gesetzt werden. Diese Einstellung gibt an, dass dieser Client immer über Tunnelung kommuniziert.
Die anderen Werte, die für die Eigenschaft "com.ibm.CORBA.ForceTunnel" angegeben werden können, sind im Folgenden
beschrieben:
- NEVER: Gibt an, dass die HTTP-Tunnelung inaktiviert ist.
Wenn eine TCP-Verbindung
fehlschlägt, wird eine Ausnahme des CORBA-Systems (COMM_FAILURE) ausgelöst.
- WHENREQUIRED: Gibt an, dass die HTTP-Tunnelung verwendet wird, wenn TCP-Verbindungen fehlschlagen.
Die zweite Eigenschaft gibt den vollständig qualifizierten URL an, über den das Tunnelungsservlet erreicht wird.
Der Port "9080" ist der WC_defaulthost-Port des Servers.
Die Portnummer, die Sie angeben, muss mit der Portnummer übereinstimmen, die in der Konfigurationsdatei "serverindex.xml" für den Server
definiert ist, auf dem sich das Servlet "IIOPTunnelServlet" befindet.
Die dritte Eigenschaft inaktiviert die ORB-Fragmentierung.
Normalerweise fragmentiert der ORB Datenübertragungen in Fragmente, um die Leistung zu verbessern, aber die Tunnelung funktioniert nicht, wenn der
ORB fragmentiert.
Sie können diese Eigenschaften auch definieren, indem Sie sie als Parameter in der JVM-Befehlszeile eingeben:
-Dcom.ibm.CORBA.ForceTunnel=always
-Dcom.ibm.CORBA.TunnelAgentURL=http://Hostname:9080/iioptunnel/tunnel
-Dcom.ibm.CORBA.FragmentSize=0
Optional können Sie auch die folgende Eigenschaft angeben, wenn Sie
clientseitige Sicherheitseinstellungen definieren möchten:
-Dcom.ibm.CORBA.ConfigURL=file:PROFILE_ROOT/properties/sas.client.props
- Inaktivieren Sie die Fragmentierung im serverseitigen ORB. Die einzige
Eigenschaft, die Sie für den serverseitigen ORB konfigurieren müssen, um die Tunnelung zu aktivieren, ist die
Eigenschaft "com.ibm.CORBA.FragmentSize".
Diese Eigenschaft muss auf 0 gesetzt werden, um die Fragmentierung zu inaktivieren.
- Klicken Sie in der Administrationskonsole auf
,
und klicken Sie anschließend auf den Server, in dem das Tunnelungsservlet installiert ist.
- Klicken Sie auf ORB-Service und anschließend auf .
- Klicken Sie auf , und geben Sie anschließend
com.ibm.CORBA.FragmentSize im Feld "Name" und 0 im Feld "Wert" ein.
- Klicken Sie auf ,
und speichern Sie anschließend die Änderungen.
- Stoppen Sie den Anwendungsserver, und starten Sie ihn anschließend erneut.
Nächste Schritte
Der Client kann jetzt Anforderungen über die Firewall an den Server senden, der für die HTTP-Tunnelung aktiviert ist.