SendRedirect-Problem mit Dispatcher und Websphere

Problem, Frage

Folgendes Setup: IHS-Webserver mit konfiguriertem Dispatcher-Modul, das wiederum auf eine Websphere-Anwendungsserver-Renderfarm verweist, auf der eine CQ-Instanz ausgeführt wird. Ein Klassen- oder JSP-Skript in CQ ruft die Methode response.sendRedirect() auf, die zu einer falschen Umleitung führt: der interne Servername und Port des Websphere-Anwendungsservers, der von außen nicht erreichbar ist, ist offen in der Speicherort- Antwort-Kopfzeile sichtbar, die für die eigentliche Umleitung verwendet wird.

Die eigentliche Ursache für dieses Problem ist Websphere selbst, da IBMs Implementierung der Methode HttpServletResponse#sendRedirect() direkt von benutzerdefinierten Anforderungs-Kopfzeilen beeinflusst wird, die standardmäßig von Webspheres IHS-Plugin generiert werden. Dies wird als ein IBM Anbieter-Lock-in-Effekt-Problem angesehen.

Auflösung, Antwort

Mit der Nutzung von mod_headers auf dem IHS-Webserver können Websphere-spezifische Kopfzeilen an den App-Server übergeben werden, indem solche Kopfzeilen mit der RequestHeader-Direktive hinzugefügt werden. Darüber hinaus müssen diese benutzerdefinierten Kopfzeilen in der Dispatcher-Konfiguration explizit zugelassen werden, da diese benutzerdefinierten Kopfzeilen andernfalls ignoriert werden.

Beispiel:

  • Öffentliche Domäne: http://www.mydomain.com.

IHS-Konfiguration.

Bearbeiten Sie die Konfigurationsdatei httpd.conf des IHS-Webservers und gehen Sie folgendermaßen vor:

  • Stellen Sie sicher, dass das Modul mod_headers vorhanden und geladen ist
  • Fügen Sie WAS-spezifische Header mit der RequestHeader-Direktive hinzu

Beispiel (Auszug aus httpd.conf):

...
LoadModule headers_module modules/mod_headers.so
...
<Directory />
    <IfModule disp_apache2.c>
        # set custom Websphere headers
        RequestHeader set $WSSN www.mydomain.com
        RequestHeader set $WSSP 80
  
        SetHandler dispatcher-handler
    </IfModule>
    Options FollowSymLinks
</Directory>

Dispatcher-Konfiguration

Auf Dispatcher-Ebene muss die Liste der oben konfigurierten Anforderungsheader der Liste der Client-Header hinzugefügt werden, die der Dispatcher in diesem Fall an die definierte Renderfarm Websphere-Anwendungsserver weiterleitet.

Führen Sie die folgenden Schritte aus:

  • Bearbeiten Sie die Konfigurationsdatei dispatcher.any
  • Suchen Sie den Abschnitt /clientheaders und fügen Sie zusätzliche Header hinzu, die eingefügt werden sollen
  • IHS neu starten

Beispiel (Auszug aus dispatcher.any):

...
  /clientheaders
    {
    ...
    "$WSSN"
    "$WSSP"
    }
...

Websphere-Konfiguration

Der Websphere-Header $WSSP gibt den Port an und $WSSN definiert den Hostnamen, der verwendet werden soll, wenn response.sendRedirect() in Websphere aufgerufen wird. Darüber hinaus wird der im Header $WSSP angegebene Port auch zum Zuordnen des virtuellen Hosts in Websphere verwendet.

Verbinden Sie sich mit der Administrationskonsole von Websphere und gehen Sie folgendermaßen vor:

  • Navigieren Sie zu Environment> Virtuelle Hosts
  • Wählen Sie die Konfiguration des virtuellen Hosts aus, die für CQ verwendet wird
  • Klicken Sie auf Host-Aliase
  • Fügen Sie Port 80 hinzu
  • Starten Sie Websphere bei Bedarf neu



HINWEIS: Je nach Konfiguration müssen möglicherweise mehr Websphere-spezifische Header hinzugefügt werden. Dieses Dokument beschreibt Websphere-spezifische Header und ihre Bedeutung.

Herunterladen

 Adobe

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online