Sistema de Nombrado en Java (JNDI) y II

El paquete javax.naming.directory contiene los siguientes m�todos (adem�s de sus sobrecargas java.lang.String) para tratar con esquemas de directorio:

C�mo usa estos m�todos un usuario del API se explic� en la lecci�n Esquemas.

getSchema(), getAttributeDefinition(), y getAttributeSyntaxDefinition() devuelven un puntero a un �rbol de esquema, mientras que getSchemaClassDefinition() devuelve un contexto cuyos hijos vienen del �rbol de esquema. La siguiente figura explica la relaci�n entre el �rbol de directorio y el �rbol de esquema.

Si una implementaci�n de contexto no soporta devolver informaci�n de esquema, estos m�todos deber�an lanzar una OperationNotSupportedException. Aunque una implementaci�n de contexto normalmente soporta todos o ninguno de estos cuatro m�todos, tambi�n podr�a soportar s�lo alguno de ello. Adem�s, algunos servidores de directorios no exportan todos los datos requeridos para rellenar completamente el �rbol de esquema. Por lo tanto, una implementaci�n de contexto podr�a no poder devolver datos relevantes para todos estos m�todos.

.�Estrategias de Implementaci�n

Una implementaci�n de contexto que soporte m�todos de esquema deber�a seguir las recomendaciones de la Guideline for LDAP Service Providers cuando elija los nombres de atributos a utilizar para describir los datos del esquema.

Una estrategia com�n es construir un �rbol de esquema en memoria que sea un espejo del mostrado en la figura. Podr�a existir m�s de un �rbol de esquema por cada implementaci�n de contexto porque getSchema() accepta un argumento Name. Si hay uno o m�s �rboles de esquema depende del servicio subyacente y/o la configuraci�n del servidor. Un servidor LDAP, por ejemplo, podr�a configurarse para tener diferentes �rboles de esquema para diferentes partes de su �rbol de directorio. Un usuario del API que llama a getSchema() sobre diferentes partes del �rbol podr�a esperar obtener los correspondientes (y posiblemente diferentes) �rboles de esquema.

Cada nodo en el �rbol es un DirContext y representa una definici�n de esquema. El nodo tiene atributos asociados que describen las definiciones de esquema. Estos atributos se describen en la lecci�n Esquemas. Los contenidos de cada nodo (nombre y atributos) est�n determinados por el servicio de directorio subyacente y la informaci�n de esquema del servidor. Por ejemplo, una implementaci�n de contexto podr�a tener un esquema interno (fijo), mientras que otra podria obtener din�micamente los datos del esquema desde el servicio de directorio.

Para getSchemaClassDefinition(), necesitamos crear un nuevo ejemplar de DirContext y unirlos como nodos hijos que representan las definiciones de clases del objeto nombrado. Por ejemplo, si el objeto nombrado es de las clases "top" y "person", el ejemplar de DirContext tendr� dos nodos hijos DirContext, uno representando la definici�n de "top" y otro para "person". Los DirContexts "top" y "person" son nodos de la rama "ClassDefinition" del �rbol de esquema (la apuntada por getSchema()).

.�Definiciones de Atributos

Para implementar los m�todos de esquema del interface Attribute, necesitamos proporcionar una clase que implemente este interface o una subclase de BasicAttribute que sobreescriba los dos m�todos de esquema. Nuestra implementaci�n de contexto, cuando se le pida que devuelta cualquier Attribute, devolver� ejemplares de esta clase. Si usamos un �rbol de esquema en-memoria como se sugeri� anteriormente, entonces getAttributeDefinition() devolver� un nodo de la rama "AttributeDefinition" del �rbol de esquema, mientras que getAttributeSyntaxDefinition() devolver� un nodo de la rama "SyntaxDefinition".

.�Caracter�sticas Avanzadas

Los nodos DirContext devueltos por los m�todos de esquema son objetos DirContext totalmente maduros. Esto significa que son libres de implementar, o no, todos los m�todos disponibles en el interface DirContext.

Una implementaci�n de contexto soporta actualizaciones de objeto del esquema s�lo con la extensi�n de que las correspondientes actualizaciones ser�n reflejadas en los datos de esquema del servicio de directorio subyacente. Por ejemplo, nunca deber�amos permitir que un DirContext sea eliminado del �rbol de esquema a menos que la definici�n del esquema correspondiente sea eliminada del servicio de directorio subyacente.

.�Optimizaciones

Normalmente cuesta mucho generar un �rbol de esquema. La generaci�n implica leer los datos del esquema desde el servicio de directorio y analizar los datos y luego construir un �rbol en la memoria. Para mejorar el rendimiento, una implementaci�n de contexto puede almacenar el �rbol de esquema para que pueda ser compartido por varios contextos. Por supuesto, dicha compartici�n deber�a permitirse si no compromete la correcci�n y la seguridad.

COMPARTE ESTE ARTÍCULO

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