Sugerencias de programación de cliente para el servicio Object Request Broker

Cada intercambio de solicitud o respuesta IIOP (Internet InterORB Protocol) consta de un ORB del lado del cliente y un ORB del lado del servidor. Es importante que cada aplicación que utilice IIOP esté correctamente programada para comunicarse con el ORB (Object Request Broker) del lado del cliente.

Las sugerencias siguientes le ayudarán a asegurarse de que una aplicación que utiliza IIOP para manejar los intercambios de solicitudes y respuestas esté correctamente programada para comunicarse con el ORB (Object Request Broker).

Resolución de referencias iniciales a los servicios

Las aplicaciones cliente pueden utilizar las propiedades ORBInitRef y ORBDefaultInitRef para configurar la ubicación de red que utiliza el servicio ORB para buscar un servicio como, por ejemplo, el nombre. Una vez configuradas, estas propiedades se incluyen en los parámetros que se utilizan para inicializar el ORB, como se muestra en el siguiente ejemplo:
org.omg.CORBA.ORB.init(java.lang.String[] args, 
                       java.util.Properties props)

Estas propiedades se pueden establecer en código de cliente o por argumento de línea de mandatos. Se puede especificar más de una ubicación de servicio utilizando varios valores de la propiedad ORBInitRef (uno para cada servicio), pero sólo se puede especificar un valor ORBDefaultInitRef. Si desea obtener más información sobre las dos propiedades y el orden de prioridad que utiliza el ORB para ubicar los servicios, lea la especificación CORBA/IIOP.

Para establecerlas en código de cliente, estas propiedades son com.ibm.CORBA.ORBInitRef.nombre_servicio y com.ibm.CORBA.ORBDefaultInitRef, respectivamente. Por ejemplo, para especificar que el servicio de denominación (NameService) e encuentra en sample.server.com en el puerto 2809, establezca la propiedad com.ibm.CORBA.ORBInitRef.NameService como corbaloc::sample.server.com:2809/NameService.

Para establecerlas por argumento de línea de mandatos, estas propiedades son -ORBInitRef y -ORBDefaultInitRef, respectivamente. Para localizar el mismo servicio de denominación especificado anteriormente, utilice el siguiente mandato Java:

Una vez establecidas estas propiedades para los servicios soportados por el ORB, las aplicaciones Java Platform, Enterprise Edition (Java EE) pueden llamar a la función resolve_initial_references del ORB, como se define en la especificación CORBA/IIOP, para obtener la referencia inicial para un servicio determinado).

API preferida para obtener una instancia de ORB

Para las aplicaciones Java EE, puede utilizar uno de los siguientes enfoques. No obstante, se recomienda utilizar el enfoque JNDI (Java Naming and Directory Interface) para asegurarse de que se utiliza la misma instancia de ORB en toda la aplicación cliente; de esta forma se evitarán las inconsistencias no deseadas que se producen cuando se utilizan instancias de ORB diferentes.

Enfoque JNDI: Para las aplicaciones Java EE (incluidos los enterprise beans, los clientes Java EE y los servlets), puede obtener una instancia de ORB creando un objeto InitialContext de JNDI y buscando el ORB con el nombre java:comp/ORB, tal como se muestra en el siguiente ejemplo:
javax.naming.Context ctx = new javax.naming.InitialContext();
org.omg.CORBA.ORB orb = 
   (org.omg.CORBA.ORB)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("java:comp/ORB"), 
                                                            org.omg.CORBA.ORB.class);
La instancia de ORB obtenida utilizando JNDI es un objeto singleton, compartido por todos los componentes Java EE que se ejecutan en el mismo proceso de máquina virtual Java.
Avoid trouble Avoid trouble: Debe utilizar el enfoque JNDI si desea beneficiarse de las ventajas de la funcionalidad de WLM y de la migración tras error en la aplicación. Para obtener información sobre cómo obtener un contexto inicial del clúster del servidor, consulte el ejemplo sobre el uso de un URL de objeto CORBA con direcciones de servidor de varios nombres, que se encuentra en el tema dedicado a la obtención de un contexto inicial definiendo la propiedad URL del proveedor.gotcha
Enfoque CORBA: Como las aplicaciones de cliente ligero no se ejecutan en un contenedor Java EE, no pueden utilizar interfaces JNDI para buscar el ORB. En este caso, puede obtener una instancia de ORB utilizando las interfaces de programación CORBA, de la siguiente manera:
java.util.Properties props = new java.util.Properties();
java.lang.String[] args = new java.lang.String[0];
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);

A diferencia del enfoque JNDI, la especificación CORBA requiere que se cree una nueva instancia de ORB cada vez que se llame al método ORB.init. Si es necesario cambiar los valores predeterminados de ORB, puede añadir valores de propiedades de ORB al objeto Properties que se pasa en la llamada al método ORB.init.

El uso del método com.ibm.ejs.oa.EJSORB.getORBinstance está en desuso, soportado en los releases anteriores del producto.

Restricciones de API al compartir una instancia de ORB entre los componentes de la aplicación Java EE

A efectos de rendimiento, a menudo tiene sentido compartir una instancia de ORB entre varios componentes en una aplicación Java EE. Tal como necesita la especificación Java EE, versión 1.3, todos los contenedores de EJB proporcionan una instancia de ORB en el espacio de nombres JNDI como java:comp/ORB. Cada contenedor puede compartir esta instancia entre los componentes de la aplicación, aunque no es necesario. Para conseguir un aislamiento correcto entre los componentes de la aplicación, el código de la aplicación debe cumplir con las siguientes restricciones:
  • No llamar a los métodos de destrucción y cierre de ORB
  • No llamar a los métodos de org.omg.CORBA_2_3.ORB register_value_factory o unregister_value_factory

Asimismo, no comparta una instancia de ORB entre componentes de aplicación de aplicaciones Java EE diferentes.

Uso necesario de rmic e idlj que se suministra con IBM Developer Kit

El entorno JRE (Java Runtime Environment) utilizado por este producto incluye las herramientas rmic e idlj. Estas herramientas se utilizan para generar enlaces de lenguaje Java para el protocolo CORBA/IIOP.

Durante la instalación del producto, se instalan las herramientas en el directorio raíz_servidor_aplicaciones/java/ibm_bin. Las versiones de estas herramientas incluidas en los kits de desarrollo Java en el directorio $JAVA_HOME/bin que no son el IBM Developer Kit que se instala con este producto son incompatibles con este producto.

Cuando se instala el producto, el directorio raíz_servidor_aplicaciones/java/ibm_bin se incluye en el orden de búsqueda de $PATH para permitir el uso de los scripts rmic e idlj que proporciona IBM. Como los scripts están en el directorio raíz_servidor_aplicaciones/java/ibm_bin y no en el directorio raíz_servidor_aplicaciones/java/bin del estándar JRE, es improbable que pueda sobregrabarlos cuando se aplica mantenimiento a un JRE que no sea de IBM.

Además de las herramientas rmic e idlj, el JRE también incluye archivos IDL (Interface Definition Language). Los archivos se basan en los archivos definidos por el OMG (Object Management Group), y pueden ser utilizados por aplicaciones que necesiten una definición IDL de determinadas interfaces ORB. Los archivos se colocan en el directorio raíz_servidor_aplicaciones/java/ibm_lib.

Antes de utilizar la herramienta rmic o idlj, asegúrese de que el directorio raíz_servidor_aplicaciones/java/ibm_bin está incluido en el orden de búsqueda de la variable PATH correcta del entorno. Si la aplicación utiliza archivos IDL en el directorio raíz_servidor_aplicaciones/java/ibm_lib, asegúrese también de que el directorio esté incluido en la variable PATH.


Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rorb_orbprog
File name: rorb_orbprog.html