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:


Localizaciones

El ejemplo serialización mostraba que un objeto almacenado (serializado) en un directorio puede leerse usando Context.lookup()

// Check that the object is bound
Button b2 = (Button)ctx.lookup("cn=Button");
System.out.println(b2);

De forma similar, en los ejemplos referencia, atributos, Objeto remoto, objeto CORBA, y Objeto personalizado, podríamos simplemente usar lookup() para recuperar el objeto almacenado.

Factorías de Objetos

En el ejemplo de atributos, el entorno usado para crear el contexto inicial tenía una propiedad adicional, Context.OBJECT_FACTORIES.

Está propiedad especifica los nombres de clase de una o más factorias de objetos a usar cuando afinemos la información almacenada en el directorio dentro de objetos Java esperados por la aplicación.

Cuando un objeto se representa como una referencia en el directorio, la referencia contiene el nombre de la clase y, opcionalmente, la localización de la factoría de objetos, Consecuentemente, el ejemplo referencia no necesitaba seleccionar la propiedad Context.OBJECT_FACTORIES. De forma similar, cuando se serializa un objeto, normalmente sólo necesita ser des-serializado y no ser transformado posteriormente. Este era el caso del ejemplo anterior java.awt.Button, por eso de nuevo, tampoco se especificó una factoría de objetos.

En el ejemplo atributos, lo que se almacena para representar el objeto Drink es simplemente una colección de atributos, por eso necesitamos especificar una factoría de objetos, DrinkFactory, a utilizar para convertir aquellos atributos de un objeto Drink.

Aunque no se especificaron factorías en los ejempos de objetos remotos y CORBA, éstas se pre-configuraron dentro del proveedor de servicios LDAP que se utilizó. El ejemplo del objeto personalizado también usaba una factoría de objetos. Aquí, la factoría se especificaba usando un fichero de recursos de aplicación.

Las factorías de objetos se describen en más detalle en la lección Factorias de Objetos.

Tipo de Objeto

El tipo de objeto devuelto por lookup() está determinado por la factoría de objetos y/o el proveedor de servicios. En el ejemplo de objeto remoto, el objeto buscado es un objeto java.rmi.Remote. En los ejemplos de objetos RMI/IIOP y CORBA, el objeto buscado es un objeto CORBA.

Abajo tenemos algunos ejemplos de cómo se usa un objeto después de haberlo buscado desde el directorio.

El siguiente códido busca un objeto remoto unido usando los ejemplos unión directa  y referencia.

// Read from the directory 
Hello h = (Hello)ctx.lookup(name);

// Execute the remote method
System.out.println(h.sayHello());

Para ejecutar este ejemplo con éxito, el RMI requiere que especifiquemos un controlador de seguridad y una política de seguridad.

# java -Djava.security.manager -Djava.security.policy=.policy \
    LookupRemote cn=RemoteHello

Después de realizar la lookup(), podemos forzar el resultado a una clase Hello y llamar a un método sobre ella.

Nota:

Los ficheros stub y server deben haberse situado en la localizaciones especificadas por el programa servidor (es decir, el especificado por la propiedad "java.rmi.server.codebase"), o directamente por el ejemplo uniones.

El siguiente código busca un objeto CORBA unido usando el ejemplo de Objeto CORBA.

// Look up the object
org.omg.CORBA.Object cobj = (org.omg.CORBA.Object)ctx.lookup("cn=CorbaHello");

// Narrow the object to the right type
HelloApp.hello h2 = HelloApp.helloHelper.narrow(cobj);

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

Después de realizar la lookup(), debemos usar el método narrow() apropiado para apuntar al objeto del tipo correcto y luego invocar al método apropiado sobre el objeto.

Nota:

Debemos copiar al classpath, o de otro modo hacerlos disponibles en el classpath, los ficheros class generados por idltojava (es decir, el directoro HelloApp y sus contenidos) en el ejemplo uniones.


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