Webanwendungen mit fernen Web- oder Portletanwendungen unter Verwendung von RRD implementieren

Remote Request Dispatcher (RRD) ist eine Plug-in-fähige Erweiterung für den Web-Container, mit dem Anwendungsframeworks, Servlets und JSP-Dateien (Java™Server Pages) Inhalt, der nicht von der JVM der derzeit ausgeführten Ressource stammt, in die Antwort einfügen können, die an den Client gesendet wird.

Vorbereitende Schritte

WebSphere Application Server Network Deployment muss installiert sein, damit die Dispatcher-Funktion für ferne Anforderungen verwendet werden kann. Außerdem müssen Sie sich mit den Einschränkungen des Dispatcher für ferne Anforderungen vertraut machen. Weitere Einzelheiten finden Sie im Artikel "Hinweise zum Dispatcher für ferne Anforderungen".

Vorgehensweise

  1. Installieren Sie Unternehmensanwendungsdateien über die Konsole.
  2. Konfigurieren Sie das Senden von Include-Anforderungen zwischen der Anwendung und den fernen Ressourcen.
    • Konfigurieren Sie Webanwendungen für die Zuteilung ferner Include-Anforderungen.
    • Konfigurieren Sie Webanwendungen für die Verarbeitung ferner Include-Anforderungen.
  3. Optional: Ändern Sie Ihre Anwendung so, dass Ressourcen in zwei verschiedenen Kontexten über das Servlet-Programmiermodell gesucht werden.

    Das Servlet-Programmiermodell für das Importieren von fernen Ressourcen setzt nicht voraus, dass Sie andere APIs als die Java EE-Servlet-APIs verwenden. Die Komponente Remote Request Dispatcher (RRD) verwendet für den Abruf eines ServletContext und einer fernen Ressource dieselben Regeln. Wenn Sie die JavaServer Pages Standard Tag Library (JSTL) verwenden, muss Ihre Anwendung auch kein ServletContext-Objekt und keinen RequestDispatcher abrufen, der im Framework-Beispiel benötigt wird, weil das angepasste Tag JSTL dies implizit tut. Studieren Sie das folgende Beispiel für eine JSP-Anwendung, um zu verstehen, wie Ressourcen gesucht werden, die sich zwei unterschiedlichen Kontexten befinden (investments und banking).

    <HEAD>
    <%@ page
    language="java"
    contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8059-1"
    isELIgnored="false"
    %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" $>
    </HEAD>
    <BODY>
    
    <%--
    
    Programmierbeispiel mit JavaServer Pages und JavaServer Pages
    Standard Tag Library (JSTL).
    JSTL stellt ein angepasstes Tag bereit, mit dem durch Angabe eines
    Kontextparameters Inhalt in den Geltungsbereich derselben Anforderung
    importiert werden kann, der nicht aus dem aktuellen Webmodul stammt
    (in Servlet- und JSP-Terminologie Include).
    
    JSTL-Einschränkung: Das importierte Webmodul muss in derselben
    JVM wie die aufrufende Ressource ausgeführt werden, wenn der
    importierte URL nicht vollständig qualifiziert ist.
    
    RRD erweitert diese Funktionalität, indem er zulässt, dass sich das Webmodul in demselben Geltungsbereich wie die aktuelle Stammgruppe von
    WebSphere Application Server und nicht nur im Geltungsbereich der JVM befindet.
    --%>
    
    
    <hr size="5"/>
    <%--		Ressource investmentSummary.jsp in der Webanwendung
    		mit dem Kontextstamm /investments importieren. --%>
    
    <c:import url="investmentSummary.jsp" context="/investments"/>
    
    <hr size="5"/>
    <%--		Ressource accountSummary.jsp in der Webanwendung
    		mit Kontextstamm /banking importieren. --%>
    
    <c:import url="accountSummary.jsp" context="/banking"/>
    
    <hr size="5"/>
    
    </BODY>
    </HTML>
  4. Optional: Ändern Sie Ihre Anwendung so, dass Ressourcen in zwei verschiedenen Kontexten über das Framework-Programmiermodell gesucht werden.

    Das Framework-Programmiermodell für das Importieren von fernen Ressourcen setzt nicht voraus, dass Sie andere APIs als die Java EE-Servlet-APIs (Java Platform, Enterprise Edition) verwenden. Wenn eine Anforderung für einen ServletContext abgesetzt wird, der derzeit nicht im aktuellen Web-Container ausgeführt wird, gibt die Komponente Remote Request Dispatcher (RRD) ein ServletContext-Objekt zurück, das eine Ressource sucht, die in einer Umgebung mit WebSphere Application Sever WebSphere Application Server Network Deployment ausgeführt wird, sofern diese Ressource vorhanden ist und RRD für dieses ServletContext-Objekt aktiviert ist. Schauen Sie sich das folgende Framework-Beispiel-Snippet genau an, das veranschaulicht, wie Ressourcen in zwei unterschiedlichen Kontexten, investments und banking, gesucht werden.

    /*
    Programmierbeispiel mit einem generischen Framework.
    Die Servlet-Spezifikation stellt eine API bereit, mit der
    durch Angabe eines Kontextparameters ein Servlet-Kontext
    im Geltungsbereich der Anforderung abgerufen werden kann,
    der sich vom aktuellen Webmodulkontext unterscheidet.
    
    Einschränkung der Servlet-Spezifikation: Das Webmodul muss
    in derselben JVM wie die aufrufende Ressource ausgeführt
    werden.
    
    RRD erweitert diese Funktionalität, indem er zulässt, dass sich das Webmodul in demselben Geltungsbereich wie die aktuelle Stammgruppe von
    WebSphere Application Server und nicht nur im Geltungsbereich der JVM befindet.
    
    */
    
    protected void frameworkCall (ServletContext context, HttpServletRequest request, HttpServletResponse response) 
    														throws ServletException, IOException(
    
    						PrintWriter writer = response.getWriter();
    
    						writer.write("<HTML>");
    						writer.write("<HEAD>");
    						writer.write("</HEAD>");
    						writer.write("<BODY>");
    						writer.write("<hr size=\"5/">);
    
    						// Ressource investmentSummary.jsp in der Webanwendung
    			// mit dem Kontextstamm /investments einfügen.
    						RequestDispatcher rd = getRequestDispatcher ( context, "/investments", "/investmentSummary.jsp");
    						rd.include(request, response);
    
    						writer.write("<hr size=\"5/">);
    
    						// Ressource accountSummary.jsp in der Webanwendung
    			// mit dem Kontextstamm /banking einfügen.
    						rd = getRequestDispatcher ( context, "/banking", "/accountSummary.jsp");
    						rd.include(request, response);
    
    						writer.write("</BODY>");
    						writer.write("</HTML>");
    }
    private RequestDispatcher getRequestDispatcher (ServletContext context, String contextName, String resource) {
    						return context.getContext(contexName).getRequestDispatcher(resource);
    }

Ergebnisse

Nachdem Sie mindestens eine Unternehmensanwendung für die Verteilung ferner Include-Anforderungen und mindestens eine Unternehmensanwendung für die Verarbeitung ferner Include-Anforderungen aktiviert haben, ist der Dispatcher für ferne Anforderungen (RRD) aktiviert.

Nächste Schritte

Starten Sie die geänderten Anwendungen erneut (sofern installiert), oder starten Sie neu installierte Anwendungen, um den RRD in jeder Anwendung zu aktivieren.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tweb_rrd_overview
Dateiname:tweb_rrd_overview.html