Remote Request Dispatcher
O Remote Request Dispatcher (RRD) é uma extensão plugável ao contêiner da Web para estruturas de aplicativos, servlets e JavaServer Pages incluírem conteúdo de fora da Java™ Virtual Machine (JVM) atual para o recurso, como parte da resposta enviada ao cliente.
O Remote Request Dispatcher é uma infraestrutura extensível para outros componentes e produtos de pilha incluírem extensões customizadas, como geradores e manipuladores, na extensão do RRD. A extensão do Remote Request Dispatcher aprimora a implementação do Java Platform, Enterprise Edition (Java EE) javax.servlet.RequestDispatcher padrão para estar ciente da localização de recursos remotos usando serviços da Web para se comunicar entre máquinas dentro de um grupo principal do WebSphere Application Server, Network Deployment (ND). A extensão Remote Request Dispatcher relata quaisquer erros que ocorrerem no servidor remoto de volta para o servidor de origem. Pode também usar o SSL para comunicações seguras e propagação de contexto de segurança do WS-Security entre servidores. Consulte o tópico do arquivo rrdSecurity.props para obter informações adicionais.
O suporte de portlet do RRD leva o conceito do Remote Request Dispatcher a portlets e aprimora o contêiner do portlet para a chamada de portlets fora do recurso JVM atual.
Ao usar a extensão do RRD, você pode compartilhar o carregamento da solicitação em diversas máquinas e JVMs incluindo servidores remotos na célula. Se o recurso RRD consumir muita memória ou processador, o recurso de chamada não será afetado tanto quanto um RequestDispatcher padrão em execução na mesma JVM. O RRD resolve esse problema separando recursos em um JVM diferente.
Recursos
- Os pedidos no servidor remoto são tratados como pedidos de inclusão. Os filtros e os listeners de solicitação são iniciados como se o tipo de dispatch fosse INCLUDE.
- Os atributos de pedido e parâmetros de consulta seriáveis são enviados ao servidor remoto.
- O contexto de segurança é enviado a um servidor remoto por meio de tokens LTPA.
- Parâmetros de servlet e OutputStream
Os parâmetros de pedido são transmitidos ao servidor remoto.
- Os cabeçalhos de respostas configurados pelo recurso incluído remotamente são ignorados similarmente a inclusões em um servidor local. Os cabeçalhos internos, como Set-Cookie, ainda podem ser configurados e propagados de volta.
- Todos os cabeçalhos de pedidos originais são transmitidos ao servidor remoto
- Semelhante ao plug-in para o WebSphere Application Server.
- As chamadas de métodos retornam o estado como se estivessem no servidor local. Por exemplo, getServer retorna o nome do servidor local ou isSecure retorna se a solicitação ao servidor ‘local' é segura.
- Cookies e sessões
- Os cookies são transmitidos ao servidor remoto como parte de cabeçalhos.
- As sessões nos servidores locais e remotos usam o mesmo ID de cookie ou de sessão para um determinado cliente semelhante a inclusões no mesmo servidor. Se existir uma sessão em um servidor remoto, o cookie de sessão conterá as informações para ambos os servidores a fim de manter a afinidade com o servidor remoto.
- Exceções
- Se houver uma exceção no servidor remoto, o servidor retornará uma falha de serviços da Web específica do RRD que quebra a exceção original criada pelo aplicativo.
- Tente recriar a exceção original no servidor local se a classe de exceção existir em ambos os servidores. Se a exceção original não puder ser recriada, um ServletException específico do RRD será construído e usado no lugar.
- A exceção é recriada pelo servidor local para fins de manipulação de erro.
- Cache Dinâmica
Quando o cache dinâmico está ativado, o armazenamento em cache é desempenhado nas máquinas local e remota.
- Segurança
É possível utilizar o SSL para criptografar mensagens RRD entre servidores de aplicativos. O SSL é ativado por padrão, no entanto, você deve também passar as necessidades do contexto de segurança pelo RRD para assegurar que o estado de segurança esteja disponível na máquina remota. O RRD usa o WS-Security para passar estas informações, mas esta propagação do contexto de segurança é desativada por padrão. Consulte o tópico do arquivo rrdSecurity.props para obter informações adicionais.