O túnel HTTP possibilita que os clientes, que residem fora de um firewall,
empacote todas as informações, que o ORB (Object Request Broker) do lado do cliente
precisa para enviar ao ORB do lado do servidor, em um pedido de HTTP normal. Por conseguinte,
este pedido pode ser enviado para o servidor na porta 80, exatamente como qualquer outro pedido de
HTTP.
Antes de Iniciar
Certifique-se de que o ORB do lado do cliente seja um ORB IBM®.
O túnel
não funcionará se você estiver utilizando um ORB não-IBM no cliente.
Além disso, se
a segurança SSL (Secure Sockets Layer) for necessária para o túnel, certifique-se de que
os certificados necessários e os arquivos de chave estejam configurados.
Sobre Esta Tarefa
Às vezes os clientes que residem fora de um firewall precisam se comunicar
com módulos, tais como os módulos EJB, que residem em um servidor dentro do firewall. Os ORBs do lado do cliente e do lado do servidor gerenciam esta interação entre o cliente
e o servidor. Entretanto, normalmente os firewalls bloqueiam as portas que um cliente
utiliza para conversar com o ORB do lado do servidor. Portanto, se a sua instalação usar um
firewall que bloqueia as portas que um cliente utiliza para conversar com o ORB do lado do servidor,
você deverá configurar o túnel HTTP.
O IIOPTunnelServlet, que é enviado
com o produto como arquivo de classe com.ibm.CORBA.services.IIOPTunnelServlet.class,
permite que um cliente HTTP, como um cliente Java™, que está integrado ao RMI-IIOP,
comunique-se com um servidor que reside dentro de um firewall. Este arquivo de classe, junto com os três arquivos de classe a seguir, são empacotados dentro do arquivo WAS_HOME/plugins/com.ibm.ws.runtime_9.0.jar. Estes arquivos de classe adicionais melhoram os recursos do servlet.
- com.ibm.CORBA.services.redirector.ConnectionStream.class com.ibm.CORBA.services.redirector.Redirector.class
com.ibm.CORBA.services.redirector.RedirectorController.class
Quando o túnel está ativado, o servlet IIOPTunnelServlet no
servidor recebe o pedido de HTTP e desempacota todas as informações do ORB. O
servlet chama, então, o ORB do lado do servidor em nome do cliente. O ORB do
lado do servidor trata o pedido como trataria qualquer pedido de ORB normal e responde
ao servlet. O servlet compacta a resposta de ORB em uma resposta de HTTP
e envia a resposta de volta para o ORB do lado do cliente, por meio do firewall. O ORB do lado do cliente desempacota a resposta de HTTP e puxa-a.
O túnel
pode operar por meio de HTTPS e também de HTTP. Portanto, é possível usar a segurança SSL
(Secure Sockets Layer) para proteger seus clientes de túnel, se seus procedimentos de
segurança necessitarem que toda a comunicação com os servidores seja protegida por SSL.
- Crie um arquivo IIOPTunnel.ear instalável que inclua o servlet
IIOPTunnelServlet.
Antes de poder executar o servlet IIOPTunnelServlet no
servidor, você deve torná-lo parte de um aplicativo que possa ser instalado no
servidor. É possível usar uma ferramenta de montagem de aplicativos para criar um arquivo
IIOPTunnel.ear instalável que inclua este servlet. Por exemplo, se você usar a
ferramenta de montagem fornecida com o produto:
- Inicie a ferramenta.
- Abra a perspectiva WEB.
- Na visualização Explorador de Projetos, clique com o botão direito em uma área de janela vazia e selecione Novo > Projeto da Web Dinâmico.
- No assistente para Criar Projeto Dinâmico da Web, altere
o nome do projeto para IIOPTunnel, ou para um outro nome que seja significativo para você. Por padrão, a opção Incluir Módulo em um Projeto EAR está
selecionada, o nome do projeto EAR está configurado como IIOPTunnelEAR e a Raiz de Contexto
está configurada como IIOPTunnel.
- Mantenha essas configurações padrão e clique em Concluir.
- Inclua o arquivo com.ibm.ws.runtime_9.0.jar no Caminho de Construção do Projeto da Web.
Antes de poder registrar o novo servlet no Descritor de Implementação da Web, deve-se incluir o servlet IIOPTunnelServlet, que reside no arquivo
WAS_HOME/lib/plugins/com.ibm.ws.runtime_9.0.jar, em seu caminho de construção.
- Clique com o botão direito no Projeto da Web IIOPTunnel e selecione Propriedades > Caminho de Construção Java.
- Selecione a guia Bibliotecas e pressione o botão Incluir JARs Externos.
- Inclua o arquivo com.ibm.ws.runtime_9.0.jar e, em seguida, clique em OK.
- Exporte o arquivo EAR.
- Clique com o botão direito do mouse no projeto IIOPTunnelEAR.
- Clique em Exportar > Arquivo EAR, procure seu diretório de destino
selecionado e especifique o nome do arquivo EAR como IIOPTunnel.ear, ou o nome do arquivo
que você especificou na Etapa 1d.
- Clique em Concluir.
Você obtém seu arquivo IIOPTunnel.ear,
que está pronto para ser implementado.
- Instale o arquivo IIOPTunnel.ear em seu servidor de aplicativos de destino. Você pode aceitar todos os valores padrão durante a instalação.
Lembre-se
de ajustar o tunnelAgentURL no cliente para refletir o local real
do IIOPTunnelServlet em seu servidor.
Explicação detalhada do formato URL do túnel: http(s)://host_name:port/context_root/Servlet_URLmapping
O host_name:port é
o nome do host e a porta designada ao servidor no qual o IIOPTunnelServlet
reside. A porta pode ser HTTP ou HTTPS, dependendo de seus
requisitos de segurança.
Os valores context_root e Servlet_URLmapping devem corresponder aos
valores definidos para os elementos context-root e servlet-URLmapping no arquivo web.xml
do servlet.
Por exemplo, se o servlet for
instalado no servidor padrão e context-root=iioptunnel e Servlet-URLmapping=tunnel,
a seguinte URL deverá ser especificada para o tunnelAgentURL no cliente:
http://localhost:9080/IIOPTunnel/IIOPTunnelServlet
Para
verificar se o servlet está implementado e sendo executado com êxito, você pode abrir
um navegador e apontar para http:// hostname:9080/iioptunnel/tunnel.
Se o servlet
estiver funcionando, o navegador tentará fazer download dele como se fosse apenas um
arquivo normal. Você pode, então, cancelar o download.
- Verifique se o servlet está implementado e sendo executado com êxito
Para verificar se o servlet está implementado e sendo executado com êxito,
você pode abrir um navegador e apontar para http:// hostname:9080/IIOPTunnel/IIOPTunnelServlet.
Se o servlet estiver funcionando, o navegador tentará fazer download dele como se
fosse apenas um arquivo normal. Simplesmente cancele o download.
Especifique os
parâmetros a seguir se você encontrar um problema ao implementar e executar o
servlet.
-Dcom.ibm.CORBA.TunnelAgentURL=https://localhost:9080/IIOPTunnel/IIOPTunnelServlet?debug=true
- Configure o Serviço ORB de forma que o ORB do lado do cliente ative o túnel
O cliente determina se o túnel IIOP e HTTP padrão deve
ser utilizado para a comunicação com o ORB do lado do servidor. Portanto, você deve configurar
propriedades do ORB a seguir no cliente.
com.ibm.CORBA.ForceTunnel=ALWAYS
com.ibm.CORBA.TunnelAgentURL=http://host_name:9080/IIOPTunnel/IIOPTunnelServlet com.ibm.CORBA.FragmentSize=0
Para
o túnel ativado no ORB do cliente, a propriedade com.ibm.CORBA.ForceTunnel deve
ser configurada para
ALWAYS. Esta configuração indica que esse cliente está sempre
indo para o túnel. Outros valores que podem ser especificados para a propriedade
com.ibm.CORBA.ForceTunnel são:
- NEVER, que indica que você deseja desativar o túnel HTTP.
Se uma conexão TCP falhar, ocorrerá uma exceção do sistema CORBA (COMM_FAILURE).
- WHENREQUIRED, que indica que você deseja utilizar o túnel HTTP
se as conexões TCP falharem.
A segunda propriedade especifica a URL completa em que
o servlet de túnel é alcançado. A porta 9080 é a porta WC_defaulthost
do servidor. O número da porta especificado deve corresponder ao número da porta
especificado no arquivo de configuração, serverindex.xml, para o servidor no
qual o servlet IIOPTunnelServlet reside.
A terceira propriedade s
desativa a fragmentação do ORB.
Normalmente, o ORB divide a comunicação em fragmentos
para melhorar o desempenho, mas o túnel não funcionará se o ORB estiver fragmentando.
Você
também pode configurar estas propriedades incluindo-as como parâmetros na linha de comandos da
JVM:
-Dcom.ibm.CORBA.ForceTunnel=always
-Dcom.ibm.CORBA.TunnelAgentURL=http://host_name:9080/iioptunnel/tunnel
-Dcom.ibm.CORBA.FragmentSize=0
Opcionalmente, você também poderá configurar
a seguinte propriedade se desejar especificar configurações de segurança do lado do cliente:
-Dcom.ibm.CORBA.ConfigURL=file:PROFILE_ROOT/properties/sas.client.props
- Desative a fragmentação no ORB do lado do servidor. A única
propriedade que deve ser configurada para o ORB do lado do servidor para ativar o túnel
é a propriedade com.ibm.CORBA.FragmentSize. Esta propriedade deve ser configurada como 0 para
desativar a fragmentação.
- No console administrativo, clique em e clique no servidor no qual o servlet de tunelamento está instalado.
- Clique em Serviço ORB, em seguida, clique em .
- Clique em e especifique com.ibm.CORBA.FragmentSize no campo Nome
e 0 no campo Valor.
- Clique em e salve as mudanças.
- Pare e inicie novamente o servidor de aplicativos.
O que Fazer Depois
O cliente pode iniciar o envio de pedidos através do firewall ao
servidor configurado para o túnel HTTP.