Sistema de Nombrado en Java (JNDI) [Parte I]

CORBA (Common Object Request Broker Architecture) define un marco de trabajo independiente del lenguaje para que los objetos se llamen a m�todos unos de otros. Antes de que un objeto pueda llamar a un m�todo de otro objeto, primero debe obtener una referencia al objeto. El objeto destino puede usarse de diferentes formas para hacer que su referencia sea conocida por otros objetos. La forma tradicional es usar el servicio de nombres, como el Common Object Services (COS). Otra forma es publicar la referencia del objeto en un servidor LDAP que soporte el esquema definido en la RFC 2714. Usando el JNDI, el c�digo para usar cualquiera de estas formas es el mismo. Podemos seleccionar el servicio de nombres o directorio a utilizar durante la ejecuci�n seleccionando el contexto inicial a utilizar. El ejemplo mostrado en esta p�gina usa un directorio LDAP.

.�Unir una Referencia a un Objeto CORBA

Antes de Continuar:

Para ejecutar este ejemplo, necesitamos ldapbp.jar, como se explic� en la introducci�n a esta lecci�n. Si no estamos usando el Java 2 SDK, v1.2 o una versi�n superior, tambi�n necesitaremos instalar Java IDL, una versi�n que viene con el RMI-IIOP Standard Extension.

El siguiente ejemplo primero define un interface, HelloApp usando "Interface Description Language" (IDL).

module HelloApp {
    interface hello
    {
        string sayHello();
    };
};

Luego define una implementaci�n de este interface, helloServant.

class helloServant extends HelloApp._helloImplBase {
    public String sayHello() {
	return "\nHello world !!\n" + new java.util.Date();
    }
}

Despu�s, crea un ejemplar de helloServant y lo une al directorio, asign�ndole el nombre "cn=CorbaHello".

// Create and initialize the ORB
ORB orb = ORB.init(args, null);

// Create the servant and register it with the ORB
helloServant helloRef = new helloServant();
orb.connect(helloRef);

// Let service provider use the ORB
env.put("java.naming.corba.orb", orb);

// Create the initial context
DirContext ctx = new InitialDirContext(env);

// Bind the object to the directory
ctx.bind("cn=CorbaHello", helloRef);

Despu�s de que el objeto se haya unido al directorio, una aplicaci�n puede buscarlo usando el siguiente c�digo.

// Look up and narrow the object
HelloApp.hello h2 = HelloApp.helloHelper.narrow(
	(org.omg.CORBA.Object)ctx.lookup("cn=CorbaHello"));

// Invoke the method
System.out.println(h2.sayHello());

Para ejecutar este ejemplo, debemos hacer lo siguiente.

  1. Ejecutar idltojava con HelloApp.idl como el argumento para producir los esqueletos del objeto CORBA.
    # idltojava HelloApp
    

    Esto genera un directorio HelloApp que contiene ficheros .java y .class.

  2. Compilar este ejemplo.
    # javac CorbaObj.java
    
  3. Ejecutar el ejemplo.
    # java CorbaObj
    

    Si queremos que el helloServant creado por este ejemplo, espere a que accedan otros clientes CORBA, ejecutamos el programa con el par�metro -wait.

    # java CorbaObj -wait
    

Cuando posteriormente busquemos este objeto desde el directorio, �ste devolver� el objeto CORBA helloServant unido. Puedes ir a la lecci�n Leer Objetos desde el Directorio para ver un ejemplo.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO