Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) [Parte I]
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Objetos CORBA

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.


Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis