Le répartiteur de requêtes distantes (RRD) est une extension connectable au
conteneur web qui permet d'inclure dans des infrastructures, servlets et JSP
d'application un contenu extérieur à la machine Java™ Virtual
Machine (JVM) de la ressource en cours d'exécution, dans le cadre de la réponse envoyée au client.
Avant de commencer
Vous devez avoir installé
WebSphere
Application Server, Network Deployment pour pouvoir utiliser la fonction de répartition des requêtes éloignées. 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 rechercher les ressources
qui se trouvent dans deux contextes différents à l'aide du modèle de programmation de servlet.
Le modèle de programmation de servlet permettant d'inclure des ressources à distance ne nécessite pas le recours à des API (Application Programming Interfaces) Servlet non-Java, 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>
<%--
Exemple de programmation faisant appel à JSP et JSTL
(JavaServer Pages Standard Tag Library).
JSTL fournit une balise personnalisée permettant d'importer des contenus
de la même manière qu''include' en termes servlet et JSP) dans la portée de la même demande depuis hors
le contexte de module Web en cours en spécifiant un paramètre de contexte.
Restriction JSTL : Le module importé
doit s'exécuter au sein de la même machine JVM que la ressource appelante
si l'URL importée n'est pas complètement qualifiée.
RRD étend cette fonctionnalité en permettant au module Web
de résider dans la portée du groupe central du système WebSphere Application Server
en cours et non plus dans la seule portée de la machine JVM.
--%>
<hr size="5"/>
<%-- Inclut la ressource investmentSummary.jsp qui réside dans
l'application Web avec la racine de contexte /investments. --%>
<c:import url="investmentSummary.jsp" context="/investments"/>
<hr size="5"/>
<%-- Inclut la ressource accountSummary.jsp qui réside dans
l'application Web avec la racine de contexte /banking. --%>
<c:import url="accountSummary.jsp" context="/banking"/>
<hr size="5"/>
</BODY>
</HTML>
- Facultatif : Modifiez votre application pour rechercher les ressources
qui se trouvent dans deux contextes différents à l'aide du modèle de programmation de structure.
Le modèle de programmation du framework (environnement de développement) permettant d'inclure des ressources à distance ne nécessite pas le recours à des API (Application Programming Interfaces) Servlet non-Java EE (Java Platform, Enterprise Edition). Lorsque qu'une requête est initiée pour un nom de ServletContext qui n'est pas
en cours d'exécution au sein du conteneur Web en cours, le composant RRD
(remote request dispatcher) renvoie un objet ServletContext capable de
localiser une ressource résidant à n'importe quel endroit d'un environnement
WebSphere Application Server WebSphere
Application Server, Network Deployment, à condition
que cette ressource existe et que le répartiteur de requêtes 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.
/*
Exemple de programmation faisant appel à un framework générique.
La spécification du servlet fournit une API permettant,
en spécifiant un paramètre de contexte, d'obtenir
dans la portée de la même demande un contexte de servlet
différent du contexte de module Web en cours.
Restriction de la spécification de servlet : ce module Web
doit s'exécuter au sein de la même machine JVM que la ressource appelante.
RRD étend cette fonctionnalité en permettant au module Web de résider
dans la portée du groupe central du système WebSphere Application Server
en cours et non plus dans la seule portée de la machine 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/">);
//Inclut la ressource investmentSummary.jsp qui réside dans l'application Web
//avec la racine de contexte /investments.
RequestDispatcher rd = getRequestDispatcher ( context, "/investments", "/investmentSummary.jsp");
rd.include(request, response);
writer.write("<hr size=\"5/">);
//Inclut la ressource accountSummary.jsp qui réside dans l'application Web
//avec la racine de contexte /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é.
Que faire ensuite
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.