O RRD (Remote Request Dispatcher) é uma extensão plugável ao contêiner da Web que permite às estruturas de aplicativo, aos servlets e às JavaServer Pages (JSP) incluírem conteúdo externo da Java™ Virtual
Machine (JVM) do recurso executando no momento como parte da resposta enviada ao cliente.
Antes de Iniciar
Você deve ter o
WebSphere Application Server, Network Deployment instalado para utilizar a função RRD (Remote Request Dispatcher). Você deve também se familiarizar com as limitações do dispatcher de pedido remoto. Consulte o artigo Considerações
sobre o Dispatcher de Pedidos Remotos para obter detalhes.
Procedimento
- Instale arquivos de aplicativo corporativo com o console.
- Configure o envio de pedidos de inclusão entre os recursos de aplicativo
e remotos.
- Configure aplicativos da Web para inclusões de despacho remoto.
- Configure aplicativos da Web para inclusões de serviço remoto.
- Opcional: Modifique seu aplicativo para localizar recursos
localizados em dois contextos diferentes usando o modelo de programação de servlet.
O Modelo de Programação de Servlet para incluir recursos remotamente
não requer que você use nenhuma das Interfaces de Programação de Aplicativos (APIs)
de Servlet não Java Platform Enterprise Edition (Java EE). O componente
RRD (Remote Request Dispatcher) segue as mesmas regras para obter um
ServletContext e um recurso remoto. Usando a JavaServer Pages standard tag library (JSTL), seu aplicativo
é adicionalmente removido da obtenção de um objeto ServletContext ou RequestDispatcher
que é necessário no exemplo de estrutura na etapa a seguir, porque a tag customizada
JSTL faz isso implicitamente. Estude o exemplo
a seguir de um aplicativo JSP (JavaServer Pages) de amostra para aprender
a como localizar os recursos que estão em dois contextos diferentes,
investimentos e finanças.
<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>
<%--
Exemplo de Programação Utilizando JavaServer Pages e JavaServer Pages
Standard Tag Library (JSTL).
A JSTL fornece uma tag customizada para importar conteúdos (inclusão de termos do servlet
e das JSP) no escopo do mesmo pedido do lado de fora do
contexto do módulo da Web atual especificando um parâmetro de contexto.
Restrições JSTL: o módulo da Web importado
deve executar dentro da mesma
JVM do que o recurso de chamada
se a URL importada não estiver completa.
O RRD estende essa funcionalidade permitindo que o módulo da Web
esteja localizado dentro do escopo do grupo principal do WebSphere Application Server
atual versus o escopo da JVM.
--%>
<hr size="5"/>
<%-- Incluir recurso investmentSummary.jsp localizado no
aplicativo da Web com raiz de contexto de /investments. --%>
<c:import url="investmentSummary.jsp" context="/investments"/>
<hr size="5"/>
<%-- Incluir recurso accountSummary.jsp localizado no
aplicativo da Web com raiz de contexto de /banking. --%>
<c:import url="accountSummary.jsp" context="/banking"/>
<hr size="5"/>
</BODY>
</HTML>
- Opcional: Modifique seu aplicativo para localizar recursos localizados
em dois contextos diferentes usando o modelo de programação de estrutura.
O Modelo de Programação de Estrutura para inclusão de recursos remotamente
não requer que você use nenhuma das Interfaces de Programação de Aplicativos (APIs) de Servlet não-Java Platform, Enterprise Edition (Java EE). Quando uma solicitação é iniciada para um nome ServletContext que não está executando no momento dentro do contêiner da Web atual, o componente do RRD (Remote Request Dispatcher) retorna um objeto ServletContext que pode localizar um recurso que exoste em qualquer local dentro de um ambiente do
WebSphere Application Server WebSphere Application Server, Network Deployment desde que o recurso exista e o RRD esteja ativada para esse objeto ServletContext. Estude o snippet de estrutura de amostra a
seguir que demonstra como localizar os recursos localizados em dois
contextos diferentes, investimentos e finanças.
/*
Exemplo de Programação Utilizando uma Estrutura Genérica.
A especificação de servlet fornece uma API para obter
um contexto de servlet no escopo do mesmo pedido
diferente do contexto do módulo da Web
especificando um parâmetro de contexto.
Restrição de Especificação do Servlet: O módulo da Web que obtém
deve
executar dentro da mesma JVM que o recurso de chamada.
O RRD estende essa funcionalidade permitindo que o módulo da Web esteja localizado
dentro do escopo do grupo principal do WebSphere Application
Server atual
versus o escopo da 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/">);
//Inclui o recurso investmentSummary.jsp localizado no aplicativo da Web
//com a raiz de contexto de /investments.
RequestDispatcher rd = getRequestDispatcher ( context, "/investments", "/investmentSummary.jsp");
rd.include(request, response);
writer.write("<hr size=\"5/">);
//Inclui o recurso accountSummary.jsp localizado no aplicativo da Web
//com o raiz de contexto de /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);
}
Resultados
Após ativar pelo menos um aplicativo corporativo para efetuar dispatch de inclusões remotas e pelo menos um aplicativo corporativo para atender inclusões remotas, o RRD é
ativado.
O que Fazer Depois
Reinicie os aplicativos modificados se já estiverem instalados ou inicie aplicativos instalados recentemente para ativar o RRD em cada aplicativo.