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
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.
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.
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
- 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.