Los túneles HTTP permiten a los clientes que residen al otro lado de un cortafuegos, empaquetar toda la información que necesita el ORB (Object Request Broker) del extremo del cliente
(ORB) para enviarla al ORB del extremo del servidor, en una solicitud HTTP normal. Esta solicitud se puede enviar, posteriormente, al servidor del puerto 80, del mismo modo que cualquier otra solicitud HTTP.
Antes de empezar
Asegúrese de que el ORB del extremo del cliente sea un ORB de IBM®. La transmisión a
través de túnel no funciona si utiliza un ORB que no es de IBM en el cliente.
Además, si es necesaria la seguridad SSL (Secure Sockets Layer) para la transmisión
a través de túnel, asegúrese de que se han configurado los archivos de claves y
certificados necesarios.
Acerca de esta tarea
Algunas veces, los clientes que residen fuera de un cortafuegos necesitan comunicarse con módulos como, por ejemplo, los módulos EJB, que residen en un servidor dentro del cortafuegos.
Los ORB del extremo del cliente y del extremo del servidor gestionan esta interacción entre el cliente y el servidor. No obstante, los cortafuegos suelen bloquear los puertos que utiliza un cliente para comunicarse con el ORB del extremo del servidor. Por lo tanto, si su instalación utiliza un cortafuegos que bloquea los puertos que utiliza un cliente para comunicarse con el ORB del extremo del servidor, debe configurar el túnel HTTP.
IIOPTunnelServlet, que se incluye con el producto como un archivo de clases com.ibm.CORBA.services.IIOPTunnelServlet.class, permite que un cliente HTTP como, por ejemplo, un cliente Java™, incorporado con RMI-IIOP, se comunique con un servidor que reside dentro de un cortafuegos. Este
archivo de clase, junto con los tres archivos de clase siguientes, se
empaquetan con el archivo
WAS_HOME/plugins/com.ibm.ws.runtime_9.0.jar. Estos archivos de clase adicionales mejoran las posibilidades del servlet.
- com.ibm.CORBA.services.redirector.ConnectionStream.class com.ibm.CORBA.services.redirector.Redirector.class
com.ibm.CORBA.services.redirector.RedirectorController.class
Cuando se habilita el túnel, el servlet IIOPTunnelServlet servlet del servidor recibe la solicitud HTTP y desempaqueta toda la información del ORB. A continuación, el servlet llama al ORB del extremo del servidor en nombre del cliente. El ORB del extremo del servidor trata la solicitud como si fuera una solicitud de ORB normal y responde al servlet. El servlet empaqueta la respuesta del ORB en una respuesta HTTP y envía la respuesta al ORB del extremo del cliente, mediante el cortafuegos.
El ORB del extremo del cliente desempaqueta la respuesta HTTP y extrae la respuesta.
El túnel puede funcionar a través de HTTPS y también de HTTP. Por lo tanto, puede utilizar la seguridad SSL (Secure
Sockets Layer) para proteger los clientes del túnel si sus procedimientos de seguridad requieren que toda las comunicaciones con sus servidores estén protegidas mediante SSL.
- Cree un archivo IIOPTunnel.ear instalable que incluya el servlet IIOPTunnelServlet.
Antes de ejecutar el servlet IIOPTunnelServlet en el servidor, debe hacer que forme parte de una aplicación que puede instalar en el servidor. Puede utilizar una herramienta de ensamblaje de aplicaciones para crear un archivo
IIOPTunnel.ear instalable que incluya este servlet. Por ejemplo, si utiliza la herramienta de ensamblaje que se incluye con el producto:
- Inicie la herramienta.
- Abra la perspectiva WEB.
- En la vista Explorador de proyectos, pulse con el botón derecho
del ratón en un panel vacío y seleccione Nuevo > Proyecto web
dinámico.
- En el asistente Crear proyecto Web dinámico, cambie el
nombre de proyecto por IIOPTunnel, o por otro nombre que tenga sentido para el usuario. De forma predeterminada, la opción Añadir
módulo a un proyecto EAR está seleccionada, el nombre de proyecto EAR se establece en
IIOPTunnelEAR y el Directorio raíz de contexto se establece en IIOPTunnel.
- Conserve estos valores predeterminados y pulse Finalizar.
- Añada el archivo com.ibm.ws.runtime_9.0.jar a la vía de
construcción del proyecto web.
Antes de poder registrar el nuevo servlet en el descriptor de
despliegue web, debe añadir el servlet IIOPTunnelServlet, que reside
en el archivo
WAS_HOME/lib/plugins/com.ibm.ws.runtime_9.0.jar,
a la vía de acceso de compilación.
- Pulse con el botón derecho del ratón en el proyecto web
IIOPTunnel y seleccione Propiedades > Vía de acceso de
construcción Java.
- Seleccione la pestaña Bibliotecas y pulse el botón Añadir JAR externos.
- Añada el archivo com.ibm.ws.runtime_9.0.jar y, después, pulse
Aceptar.
- Exporte el archivo EAR.
- Pulse con el botón derecho el proyecto IIOPTunnelEAR.
- Pulse Exportar > Archivo EAR, vaya al directorio de destino
seleccionado y especifique el nombre de archivo EAR IIOPTunnel.ear, o el nombre de
archivo que haya especificado en el paso 1d.
- Pulse Finalizar.
Obtendrá el archivo IIOPTunnel.ear preparado para desplegar.
- Instale el archivo IIOPTunnel.ear en el servidor de aplicaciones de destino. Puede aceptar todos los valores predeterminados durante la instalación.
Recuerde que debe ajustar
tunnelAgentURL en el cliente de modo que refleje la ubicación real de
IIOPTunnelServlet en el servidor.
Descripción detallada del formato del URL del túnel: http(s)://nombre_host:puerto/raíz_contexto/correlaciónURL_servlet
El nombre_host:puerto es el nombre de host y el puerto asignado al servidor en el que reside IIOPTunnelServlet. El puerto puede ser un puerto HTTP o HTTPS, dependiendo de los requisitos de seguridad.
Los valores raíz_contexto y correlaciónURL_servlet deben coincidir con los valores definidos para los elementos context-root y servlet-URLmapping del archivo web.xml del servlet.
Por ejemplo, si se instala el servlet en el servidor predeterminado,
y context-root=iioptunnel y Servlet-URLmapping=tunnel, se debe especificar el siguiente URL para
tunnelAgentURL en el cliente:
http://localhost:9080/IIOPTunnel/IIOPTunnelServlet
Para verificar que se ha desplegado el servlet y que se está ejecutando correctamente, puede abrir un navegador que apunte a http:// hostname:9080/iioptunnel/tunnel. Si funciona el servlet, el navegador intenta descargar el servlet como si se tratara de un archivo normal. A continuación, puede cancelar la descarga.
- Compruebe que el servlet se ha desplegado y está ejecutándose correctamente.
Para verificar que se ha desplegado el servlet y que se está ejecutando correctamente, puede abrir un navegador que apunte a http:// hostname:9080/IIOPTunnel/IIOPTunnelServlet.
Si funciona el servlet, el navegador intenta descargar el servlet como si se tratara de un archivo normal. Simplemente cancele la descarga.
Especifique los parámetros siguientes si encuentra un problema durante el despliegue y ejecución del servlet.
-Dcom.ibm.CORBA.TunnelAgentURL=https://localhost:9080/IIOPTunnel/IIOPTunnelServlet?debug=true
- Configure el servicio ORB para que el ORB del extremo del cliente habilite el túnel
El cliente determina si se debe utilizar el túnel IIOP y HTTP estándar para las comunicaciones con el ORB del extremo del servidor. Por lo tanto, debe establecer las siguientes propiedades de ORB en el cliente.
com.ibm.CORBA.ForceTunnel=ALWAYS
com.ibm.CORBA.TunnelAgentURL=http://nombre_host:9080/IIOPTunnel/IIOPTunnelServlet com.ibm.CORBA.FragmentSize=0
Para habilitar el túnel en el ORB del cliente, la propiedad com.ibm.CORBA.ForceTunnel debe estar establecida en
ALWAYS. Este valor indica que este cliente siempre se dirige al túnel. Otros valores que se pueden especificar para la propiedad com.ibm.CORBA.ForceTunnel son:
- NEVER, que indica que desea inhabilitar el túnel HTTP.
Si falla una conexión TCP, se
produce un excepción del sistema CORBA (COMM_FAILURE).
- WHENREQUIRED, que indica que desea utilizar el túnel HTTP si fallan las conexiones TCP.
La segunda propiedad especifica el URL totalmente calificado en el que se alcanza el servlet del túnel. El puerto 9080 es el puerto WC_defaulthost para el servidor. El número de puerto que especifique debe coincidir con el número de puerto que se especifica en el archivo de configuración, serverindex.xml, para el servidor en el que reside el servlet
IIOPTunnelServlet.
La tercera propiedad desactiva la fragmentación del ORB. Normalmente, el ORB divide la comunicación en fragmentos para mejorar el rendimiento, pero si se fragmenta el ORB el túnel no funciona.
También puede establecer estas propiedades añadiéndolas como parámetros a la línea de mandatos de la JVM:
-Dcom.ibm.CORBA.ForceTunnel=always
-Dcom.ibm.CORBA.TunnelAgentURL=http://nombre_host:9080/iioptunnel/tunnel
-Dcom.ibm.CORBA.FragmentSize=0
Opcionalmente, también puede establecer la propiedad siguientes si desea especificar los valores de seguridad del extremo del cliente:
-Dcom.ibm.CORBA.ConfigURL=file:PROFILE_ROOT/properties/sas.client.props
- Desactive la fragmentación en el ORB del extremo del cliente. La única propiedad que debe configurar para que el ORB habilite el túnel es la propiedad
com.ibm.CORBA.FragmentSize. Esta propiedad se debe establecer en 0 para desactivar los fragmentos.
- En la consola administrativa, pulse y pulse el servidor donde está instalado el servlet de
tunelado.
- Pulse Servicio ORB y luego pulse .
- Pulse y especifique com.ibm.CORBA.FragmentSize en el campo Nombre y 0 en el campo Valor.
- Pulse y luego guarde los cambios.
- Detenga y reinicie el servidor de aplicaciones.
Qué hacer a continuación
El cliente puede comenzar a enviar solicitudes a través del cortafuegos al servidor configurado para túneles HTTP.