Hinweise zu Remote Request Dispatcher
Dieser Artikel beschreibt Dinge, auf die Sie bei der Verwendung von Remote Request Dispatcher achten müssen.
- Wenn eine Anwendung Parameter in bestimmter Codierung erwartet, muss die Anwendung vor dem Einsatz des
Remote Request Dispatcher eine Zeichencodierung definieren, z. B. in einer normalen Include-Anweisung.
- Die Daten aus dem Servlet-Eingabedatenstrom des lokalen Servers stehen dem fernen Server nicht zur Verfügung. Der lokale Server analysiert die POST-Daten, bevor er die RRD-Anforderung an den fernen Server sendet und fügt Parameter als Anforderungsparameter ein. Daten, die sich aus mehreren Formularen zusammensetzen, sind für den fernen Server nicht zugänglich. Es wird eine Ausnahme des Typs UnsupportedOperationException erstellt, wenn der ferne Server versucht, den Eingabedatenstrom aus der Anforderung abzurufen.
- Der ferne Server hat keinen Zugriff auf die ursprüngliche Anforderungsreferenz.
- Anforderungs- und Antwort-Wrapper, die im lokalen Server erstellt werden, sind für den fernen Server nicht verfügbar. Der Grund hierfür ist, dass ServletRequestWrapper und interne WebSphere-ServletRequest-Objekte die Schnittstelle Serializable nicht implementieren.
- Anforderungsattribute müssen serialisierbar sein.
- Die Klassendefinition von Attributen muss in lokalen und fernen Servern verfügbar sein.
- Anforderungsattribute werden an den fernen Server weitergeleitet und wieder an den lokalen Server zurückgeleitet.
- HTTP-Sitzungen
- Wenn Webanwendungen auf einem fernen Server ausgeführt werden, ist ein sitzungsübergreifender Zugriff auf unterschiedliche Webanwendungen nicht möglich.
- Wenn alle Webanwendungen in einem lokalen Server ausgeführt werden, kann eine Anwendung Sitzungen für mehrere Webanwendungen verwenden, indem sie die Sitzung in einer Tabelle speichert, auf die mehrere Webanwendungen zugreifen können. Dies ist mit RRD nicht möglich und wird auch für den lokalen Fall nicht empfohlen.
- Servlet-Programmiermodell: Es ist nicht möglich, über unterschiedliche Webanwendungen auf Sitzungen zuzugreifen.
- Normales Programmiermodell im lokalen und im fernen Szenario.
- Im lokalen Modus kann eine Anwendung Referenzen zwischenspeichern und die Sitzung für mehrere Webanwendungen verwenden. Dies ist mit RRD nicht möglich.
- Ein Sitzungsobjekt, das als Anforderungsattribut gespeichert wird, ist auf dem fernen Server nicht verfügbar, weil die Klasse "Session" die Schnittstelle "Serializable" nicht implementiert.
- Lokale Threadvariablen, die im lokalen Server gesetzt werden, sind auf dem fernen Server nicht verfügbar.
- Nicht alle Methoden, die im ServletContext-Objekt definiert sind, sind für das RRD-ServletContext-Objekt verfügbar. Ausführliche Informationen finden Sie in der SPI-Dokumentation für com.ibm.wsspi.rrd.context.RemoteServletContext.
- Der ferne Server hat keinen Zugriff auf die Ausgabe des lokalen Servers, wenn RRD verwendet wird.
- Cookies und ServletRequestWrapper
Wenn die Kundenanwendung die Methode "HttpServletRequest.getCookies" in einen Wrapper einschließt und zusätzliche Cookies zurückgibt oder Cookies entfernt, werden die geänderten Cookies nicht an den fernen Server gesendet, weil "javax.servlet.http.Cookie" die Schnittstelle "Serializable" nicht implementiert. Cookies aus den ursprünglichen Anforderungsheadern werden an den fernen Server gesendet.