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:


Directorios LDAP

Los detalles de cómo se usan los atributos LDAP para almacenar datos sobre objetos Java se describen en la RFC 2713. La RFC 2714 describe cómo se almacenan las referencias a objetos CORBA en un directorio LDAP. Esta sección ofrece un rápido sumario de estos documentos. Está pensado principalmente para desarrolladores de proveedores de servicio LDAP. Normalmente los usuarios del API no necesitarán está información. Los proveedores y las factorías de objetos/estados implementan estos detalles por eso los usuarios del API simplemente pueden usar métodos como Context.bind() y Context.lookup() como se describe en las lecciones Almacenar Objetos en el Directorio y Leer Objetos del Directorio.

Los desarrolladores de proveedores de servicio LDAP y factorías de estados/objetos, así como aquellos que necesitan añadir el esquema Java/CORBA a los servidores, deberían consultar estos docmentos además de leer esta sección.

Tipos de Objetos

Como se indicó en la lección Factorías de Estado, al servidor se le obliga a soportar el almacenamiento de los siguientes tipos de objetos.

Además de estos tipos, el proveedor de servicios LDAP de Sun tiene factorías de estado que soportan almacenamiento para objetos java.rmi.Remote y CORBA.

Los objetos Java se representan en el LDAP como subclases de la clase abstracta "javaObject". Esta clase de objeto define los atributos listados en la siguiente tabla.

Nombre Atributo LDAP Contenido
javaClassName (obligatorio) El nombre distinguido de la clase del objeto
javaClassNames Todos los otros nombres de clases e interfaces implementados por el objeto
javaCodebase La localización de los ficheros Class del objeto
javaDoc La localización de la documentación de la clase del objeto
description La descripción textual del objeto

DirContext

Un objeto DirContext se almacena correctamente en el directorioo como una entrada LDAP que tiene atributos. En otras palabras, un proveedor de servicios LDAP extrae los atributos usando DirContext.getAttributes("") y los almacena en el directorio. Cuando dicha entrada es leída desde el directorio, es devuelta como un DirContext (a menos que se use una factoría de objetos).

Objetos Referenceable

Un objeto Referenceable se representa en el directorio por su referencia (Referenceable.getReference()).

Una Reference se representa en el directorio como una clase de objeto "javaNamingReference".

Esta clase de objeto define los atributos listados en la siguiente tabla.

Nombre Atributo LDAP Contenido
javaClassName (obligatorio) Reference.getClassName()
javaFactoryName Reference.getFactoryClassName()
javaCodebase Reference.getFactoryClassLocation()
javaReferenceAddress Reference.get()

"javaReferenceAddress" es un valor multi-valor que consiste en uno o más valores. Cada valor representa una RefAddr.

En la RFC 2713 puedes encontrar como se codifica una RefAddr. Ver la sección Trucos para Usuarios de LDAP para un ejemplo.

Una entrada LDAP que tiene estos atributos debe incluir "javaObject" y "javaNamingReference" en su lista de clases de objetos. Cuando estos atributos se leen desde una entrada LDAP, se usan para construir una Reference, que luego se usa para construir un objeto representado por la información de la referencia.

Objetos Serializable

Un objeto java.io.Serializable se representa en el directorio como una clase de objeto "javaSerializedObject". Esta clase define los atributos listados en la siguiente tabla.

Nombre Atributo LDAP Contenido
javaClassName (obligatorio) Object.getClass().getName()
javaSerializedData (mandatory) Serializado desde el objeto
javaClassNames Nombres de todos los interfaces y clases implementados por el objeto.
javaCodebase Lista separada por espacios de las URLs de directorios o ficheros JAR que contienen las clases del objeto serializado.

Una entrada LDAP que tenga estos atributos debe incluir "javaObject" y "javaSerializedObject" en su lista de clases de objetos. Cuando estos atributos se leen desde una entrada LDAP, se usan para reconstruir una copia del objeto serializado. El contenido del atributo "javaSerializedData" es des-serializado dentro de un java.lang.Object. Si está disponible el atributo "javaCodebase", entonces las clases necesarias para la des-serialización se cargan desde el codebase especifiado.

Objetos Marshalled

Formatear un objeto significa grabar su estado y su codebase(s) de forma en que cuando el objeto es des-formarteado, se obtiene una copia del objeto original, posiblemente cargando automáticamente las definiciones de las clases del objeto. Podemos "marshal" cualquier objeto que sea serializable o remoto (es decir, que implemente el interface java.rmi.Remote).

Formatear es como la serialización, escepto en que también registra los codebases. Se diferencia de la serialización en que trata especialmente los objetos remotos. Si un objeto es un java.rmi.Remote, entonces, el formateo registra el stub del objeto remoto, en vez del propio objeto remoto.

Como con la serialización, cuando se formatea un objeto también se formatean su árbol completo. Cuando se des-formatea un objeto se reconstruye su árbol de objetos. Un objeto formateado está representado por la clase java.rmi.MarshalledObject.

Se representa en el directorio como un objeto de la clase "javaMarshalledObject".

Esta clase define los atributos listados en la siguiente tabla.

Nombre Atributo LDAP Contenido
javaClassName (obligatorio) Object.getClass().getName() (del objeto des-formateado)
javaSerializedData (obligatorio) Serializado desde el objeto formateado
javaClassNames Nombres de todos los interfaces y clases implementados por el objeto (des-formateado)

Una entrada LDAP que tiene estos atributos debe incluir "javaObject" y "javaMarshalledObject" en su lista de clases de objetos. Cuando se leen estos atributos desde una entrada LDAP, se usan para construir una copia del objeto formateado. El contenido del atributo "javaSerializedData" es des-serializado dentro de un objeto java.rmi.MarshalledObject.

Una factoría de objetos responsable de objetos formateados puede entonces des-formatear el objeto llamando a java.rmi.MarshalledObject.get().

Objetos CORBA

Los objetos CORBA se representan en el LDAP como subclases de la clase abstracta "corbaObject". Esta clase difine la lista de atributos de al siguiente tabla.

Nombre Atributo LDAP Contenido
corbaRepositoryId Ids de los interfaces implementados por el objeto
description Descripción textual del objeto

Un objeto CORBA se almacena en el directorio grabando su objeto referencia CORBA. Un objeto referencia CORBA se representa en el directorio como un objeto de la clase "corbaObjectReference". Esta clase define los atributos listados en la siguiente tabla.

Nombre Atributo LDAP Contenido
corbaObjectReference (obligatorio) Forma Stringified del objeeto referencia CORBA

Una entrada LDAP que tenga este atributo debe incluir "corbaObject" y "corbaObjectReference" en su lista de clases de objetos. Cuando se lee este atributo desde una entrada LDAP, se usa para reconstruir el objeto referencia stringified, que luego es usado por una factoría de objetos para obtener el correspondiente objeto CORBA "vivo".

Objetos Remote

Un objeto java.rmi.Remote que usa el protocolo JRMP se almacena en el directorio como una Reference que contiene una URL RMI o como un objeto formateado. Un objeto java.rmi.Remote que usa el protocolo IIOP se almacena en el directorio como un objeto CORBA, es decir, se almacena el objeto referencia CORBA del objeto CORBA original.

Esquemas

El Esquema Java y el Esquema CORBA que necesitamos añadir a nuestro dirctorio están incluidos en este tutorial. Ver las RFC 2713 y RFC 2714 para más detales.


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