Ejemplo: búsqueda de una ubicación inicial de EJB mediante CosNaming

Puede buscar un inicio de EJB u otro objeto CORBA de un servidor de nombres de WebSphere Application Server mediante la interfaz CosNaming de CORBA.

Puede invocar resolve o resolve_str en el contexto inicial o bien puede invocar string_to_object en el ORB. Puede utilizar un nombre calificado de modo que el nombre se resuelva independientemente del servidor de nombre donde se ejecuta la búsqueda o bien puede utilizar un nombre no cualificado que sólo se resuelva desde el contexto de raíz de servidor en el servidor de nombres que realmente contiene el enlace del objeto. (El nombre calificado recorre el espacio de nombres del sistema federado hasta llegar al contexto de raíz de servidor especificado).

Nombres cualificados y no cualificados

Cada servidor de aplicaciones tiene un servidor de nombres. Los artefactos del sistema, como las ubicaciones iniciales de EJB se enlazan en el servidor de nombres. Los distintos servidores de nombres se federan por medio de una estructura de espacio de nombres del sistema. El modo recomendado de buscar objetos en distintos servidores consiste en utilizar un nombre calificado.

Un nombre cualificado puede ser un nombre basado en la topología, que utiliza el nombre del clúster o servidor único y nodo que contiene el objeto.

Puede definir nombres cualificados fijos para los objetos. Con los nombres calificados, puede buscar objetos que residan en distintos servidores desde el mismo contexto inicial recorriendo la estructura de espacio de nombres del sistema. Como alternativa, puede utilizar un nombre no cualificado, pero sólo se resolverá utilizando el servidor de nombres asociado al servidor de aplicaciones del objeto.

CosNaming.resolve (y resolve_str) vs. ORB.string_to_object

Si dispone de un contexto inicial de algún servidor de una célula de WebSphere Application Server, puede buscar cualquier objeto CORBA con un nombre cualificado. No se necesita información adicional sobre el host o puerto para el servidor de nombres del objeto de destino.

De forma alternativa, puede buscar un objeto mediante la invocación de string_to_object en el ORB, pasando un URL de corbaname. Normalmente, está especificado un URL de tipo IIOP, de modo que la información de la dirección de rutina de carga necesaria para un contexto inicial debe estar en el URL. Puede utilizar un nombre de serie cualificado o no, aunque un nombre no cualificado sólo se resolverá si el contexto inicial es del servidor de nombres al que está enlazado el objeto.

Los siguientes ejemplos muestran las operaciones de resolución de CosNaming utilizando nombres de búsqueda cualificados basados en la topología y un nombre de búsqueda no cualificado.

Operación de resolución de CosNaming utilizando un nombre cualificado

El nombre calificado basado en la topología para un objeto depende de si dicho objeto está enlazado en un servidor único o un clúster de servidores. A continuación, se muestran ejemplos de cada uno.

Servidor único

El siguiente ejemplo muestra la búsqueda de una ubicación inicial de EJB que se está ejecutando en un servidor único. El enterprise bean que se está buscando se está ejecutando en el servidor MiServidor en el nodo Nodo1.

// Obtener el contexto inicial según se muestra en el ejemplo anterior
// Utilizando la forma del nombre de búsqueda siguiente, no importa qué
// servidor de la célula se está utilizando para obtener el contexto inicial.
...
// Buscar la interfaz de inicio utilizando el nombre bajo el que está enlazada la ubicación inicial de EJB
org.omg.CORBA.Object ejbHome = initialContext.resolve_str(
  "cell/nodes/Nodo1/servers/MiServidor/miempresa/contabilidad/AccountEJB");
accountHome =
  (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);

Clúster de servidores

El siguiente ejemplo muestra la búsqueda de una ubicación inicial de EJB que se está ejecutando en un clúster. El enterprise bean que se está buscando se está ejecutando en el clúster Clúster1. El nombre se puede resolver si alguno de los miembros del clúster se está ejecutando.

// Obtener el contexto inicial según se muestra en el ejemplo anterior
// Utilizando la forma del nombre de búsqueda siguiente, no importa qué
// servidor de la célula se está utilizando para obtener el contexto inicial.
...
// Buscar la interfaz de inicio utilizando el nombre bajo el que está enlazada la ubicación inicial de EJB
org.omg.CORBA.Object ejbHome = initialContext.resolve_str(
   "cell/clusters/Clúster1/miempresa/contabilidad/AccountEJB");
accountHome =
   (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);

Operación string_to_object de ORB que utiliza un nombre de serie no cualificado

Si la operación de resolución se está realizando en el servidor que contiene el objeto, no hay que recorrer el espacio de nombres del sistema y puede utilizar un nombre de búsqueda no cualificado. Tenga en cuenta que este nombre no se resuelve en otros servidores de nombres. Si se proporciona un nombre no cualificado, la clave del objeto debe ser NameServiceServerRoot para que se seleccione el contexto inicial correcto. Si se proporciona un nombre cualificado, se puede utilizar la clave predeterminada de NameService.

El siguiente ejemplo muestra la búsqueda de una ubicación inicial de EJB. El enterprise bean que se está buscando está enlazado en el mismo servidor que se está ejecutando en el host MiHost en el puerto 2809. Tenga en cuenta la clave de objeto de NameServiceServerRoot.

// Considerar que orb es una instancia existente de ORB
...
// Buscar la interfaz de inicio utilizando el nombre bajo el que está enlazada la ubicación inicial de EJB
org.omg.CORBA.Object ejbHome = orb.string_to_object(
    "corbaname:iiop:MiHost:2809/NameServiceServerRoot#miempresa/contabilidad");
accountHome =
    (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);

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=rnam_example_corba2
File name: rnam_example_corba2.html