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
- Installez les fichiers d'application d'entreprise à l'aide de la console.
- 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.
- 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>
- 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.