Déploiement d'applications web avec des applications web ou des collections de portlets distantes à l'aide du répartiteur de requêtes distantes (RRD)

Remote Request Dispatcher (RRD) est une extension connectable au conteneur Web qui permet aux infrastructures d'application, aux servlets et aux pages JSP ( JavaServer Pages) d'inclure du contenu provenant de l'extérieur de la machine JVM (Java™ Virtual Machine) de la ressource en cours d'exécution dans le cadre de la réponse envoyée au client.

Avant de commencer

WebSphere® Application Server Network Deployment doit être installé pour que vous puissiez utiliser la fonction de répartition des demandes à distance. Il faut également connaître les limitations du répartiteur de requêtes distantes. Pour plus d'informations, reportez-vous à l'article Remarques sur RRD.

Procédure

  1. Installez les fichiers d'application d'entreprise à l'aide de la console.
  2. Configurez l'envoi de requêtes d'inclusion entre l'application et les ressources distantes.
    • Configurez les applications web pour répartir les inclusions distantes.
    • Configurez les applications Web pour le service des inclusions distantes.
  3. Facultatif: Modifiez votre application pour localiser les ressources situées dans deux contextes différents à l'aide du modèle de programmation de servlet.

    Le modèle de programmation de servlet pour l'inclusion de ressources à distance ne nécessite pas l'utilisation d'interfaces de programmation d'application (API) de servlet nonJava Platform, Enterprise Edition (Java EE). Le composant RRD (remote request dispatcher) suit les mêmes règles pour l'obtention d'un ServletContext et d'une ressource distante. En utilisant JSTL (JavaServer Pages standard tag library), votre application n'a plus besoin de se procurer l'objet ServletContext ou RequestDispatcher, ce qui est obligatoire dans l'exemple de structure, car la balise personnalisée JSTL le fait automatiquement. Etudiez l'exemple suivant d'application JSP (JavaServer Pages) afin d'apprendre comment localiser des ressources dans deux contextes différents : les placements et la banque.

    <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>
    
    <%--
    
    Programming example using JavaServer Pages and JavaSever Pages
    Standard Tag Library (JSTL).
    JSTL provides a custom tag to import contents (in servlet and JSP
    terms include) in the scope of the same request from outside of
    the current web module context by specifying a context parameter.
    
    JSTL restriction: The web module that is imported 
    must run inside of the same JVM as the calling resource
    if imported URL is not fully qualified.
    
    RRD extends this functionality by permitting the web module to 
    be located within the scope of the current WebSphere Application Server
    core group versus the scope of the JVM.
    --%>
    
    
    <hr size="5"/>
    <%--		Include resource investmentSummary.jsp located in the 
    		web application with context root of /investments. --%>
    
    <c:import url="investmentSummary.jsp" context="/investments"/>
    
    <hr size="5"/>
    <%--		Include resource accountSummary.jsp located in the 
    		web application	with context root of /banking. --%>
    
    <c:import url="accountSummary.jsp" context="/banking"/>
    
    <hr size="5"/>
    
    </BODY>
    </HTML>
  4. Facultatif: Modifiez votre application pour localiser les ressources situées dans deux contextes différents à l'aide du modèle de programmation d'infrastructure.

    Le modèle de programmation d'infrastructure pour l'inclusion de ressources à distance ne nécessite pas que vous utilisiez des interfaces de programmation d'application (API) de servlet non Java Platform, Enterprise Edition (Java EE). Lorsqu'une demande est lancée pour un nom ServletContext qui n'est pas en cours d'exécution dans le conteneur Web en cours, le composant RRD (Remote Request Dispatcher) renvoie un objet ServletContext qui peut localiser une ressource qui existe n'importe où dans un environnement WebSphere Application Server WebSphere Application Server Network Deployment à condition que la ressource existe et que RRD soit activé pour cet objet ServletContext . Etudiez l'exemple suivant de fragment de framework afin de localiser des ressources dans deux contextes différents : les placements et la banque.

    /*
    Programming example using a generic framework.
    Servlet Specification provides an API to obtain 
    a servlet context in the scope of the same request
    different from the current web module context by
    specifying a context parameter.
    
    Servlet Specification restriction: The web module that obtain
    must run inside of the same JVM as the calling resource.
    
    RRD extends this functionality by permitting the web module to be located
    within the scope of the current WebSphere Application Server core group 
    versus the scope of the JVM.
    
    */
    
    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/">);
    
    			//Include resource investmentSummary.jsp located in web application
    			//with context root of /investments.
    			RequestDispatcher rd = getRequestDispatcher ( context, "/investments", "/investmentSummary.jsp");
    			rd.include(request, response);
    
    			writer.write("<hr size=\"5/">);
    
    			//Include resource accountSummary.jsp located in web application
    			//with context root of /banking.
    			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);
    }

Résultats

Lorsque la répartition des inclusions distantes est activée sur au moins une application d'entreprise et le service des inclusions distantes est activé sur au moins une application d'entreprise, le répartiteur de requêtes distantes (RRD) est activé.

Etape suivante

Relancez les applications modifiées déjà installées ou lancez les nouvelles applications installées pour activer le répartiteur de requêtes distantes (RRD) sur chaque application.