El JNDI contiene m�todos que acceden a informaci�n del esquema sobre las clases, tipos de atributos, y la s�ntaxis de �stos. Estos m�todos se listan en la siguiente tabla:
| M�todo | Descripci�n |
|---|---|
| DirContext.getSchema() | Devuelve al �rbol de esquema del objeto nombrado. |
| DirContext.getSchemaClassDefinition() | Devuelve la definici�n de la clase del objeto nombrado. |
| Attribute.getAttributeDefinition() | Devuelve la definici�n de atributo para �ste atributo. |
| Attribute.getAttributeSyntaxDefinition() | Devuelve la definici�n de la s�ntaxis para �ste atributo. |
DirContext.getSchema() se describe en esta p�gina. Los otros m�todos se describien con m�s detalle en otras p�ginas de esta lecci�n.
El JNDI proporciona descripciones generales sobre c�mo se deber�an comportar estos m�todos pero no espec�fica muchos detalles, como la estructura y los contenidos del �rbol de esquema, los atributos de los objetos DirContext devueltos por los m�todos de esquema, o el efecto de las modificaciones en el �rbol de esquema y los datos sobre el propio directorio. Estos detalles est�n realmente determinados por un proveedor de servicio subyacente y el servicio de directorio, porque los datos del esquema son espec�ficos para cada servicio. Sin embargo, tiene sentido que dichos detalles sean especificados para un estilo particular de directorio. La p�gina Guidelines for LDAP Service Providers describe el �rbol de esquema recomendado y los atributos para los directorios de estilo LDAP.
�Relaci�n con el Esquema LDAP
Los m�todos de la tabla anterior se llaman desde el objeto del que queremos obtener su informaci�n de esquema. Cuando estamos usando el proveedor de servicio LDAP, los objetos devueltos por estos m�todos se derivan de la informaci�n de esquema del directorio LDAP. El proveedor primero intenta obtener la informaci�n desde la sub-entrada del sub-esquema del objeto correspondiente a la entrada LDAP. Si esta entrada no esta disponible, consulta la sub-entrada del sub-esquema de DSE ra�z. Si ninguna de estas dos fuentes est� disponible, se lanza una OperationNotSupportedException.
Las p�ginas Definici�n de Clases de Objetos, Definici�n de Tipo de Atributo, Definici�n de S�ntaxis de Atributo, y Definici�n de Reglas de Correspondencia de Atributos son m�s espec�ficas sobre c�mo los atributos de la sub-entrada del sub-esquema son mapeados a los objetos devueltos por los m�todos JNDI.
�El �rbol de Esquema
El JNDI especifica que DirContext.getSchema() devuelve la ra�z del �rbol de esquema. El �rbol contiene las uniones listadas en la siguiente tabla:
| Nombre | Uni�n |
|---|---|
| AttributeDefinition | La ra�z del espacio de nombres de la definici�n del tipo de atributo. |
| ClassDefinition | La ra�z del espacio de nombres de la definici�n de la clase del objeto. |
| SyntaxDefinition | La ra�z del espacio de nombrs de la definici�n de la s�ntaxis de atributos. |
Alguna o todas esas uniones pueden estar ausentes si el directorio subyacente no publica sus datos de esquema o si el proveedor de servicio no soporta su recuperaci�n. Por ejemplo, el Netscape Directory Server v4.1, no soporta las definiciones p�blicas de la s�ntaxis.
Los proveedores de servicios tambi�n podr�an tener uniones adicionales en el �rbol de esquema, por ejemplo, uniones para reglas de correspondencia y extensiones. El proveedor de servicio LDAP de Sun, por ejemplo, soporta definiciones de reglas de correspondencia para la b�squeda desde la uni�n "MatchingRule" en el �rbol de esquema.
Aqu� tenemos un ejemplo que recupera la ra�z del �rbol de esquema de la entrada LDAP "ou=People" y lista sus contenidos:
// Get the schema tree root
DirContext schema = ctx.getSchema("ou=People");
// List the contents of root
NamingEnumeration bds = schema.list("");
while (bds.hasMore()) {
System.out.println(((NameClassPair)(bds.next())).getName());
}
Aqu� esta la salida producida por este ejemplo:
AttributeDefinition ClassDefinition