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:


Ejemplo de Directorio

Este ejemplo muestra cómo escribir un programa que recupera atributos desde un objeto directorio. Usa un proveedor de servidos LDAP para acceder a servicios LDAP.

Importar las clases JNDI Directory

Usando nuestro editor de texto favorito, creamos un fichero llamado Getattr.java.

Podemos importar el paquete completo o sólo las clases e interfacesindividuales que vamos a utilizar. El siguiente código importa las clases usadas de los paquetes javax.naming y javax.naming.directory.

import javax.naming.Context;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.DirContext;
import javax.naming.directory.Attributes;
import javax.naming.NamingException;

Crear le Contexto de Directorio Inicial

En el método main() del programa, creamos el contexto de directorio inicial. Esto es similar a la creacción del contexto inicial en el anterior ejemplo naming, excepto en que usamos el constructor para InitialDirContext.

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

DirContext ctx = new InitialDirContext(env);

Indicamos que estámos usando el proveedor de sericios LDAP seleccionando el parámetro Hashtable del constructor apropiado de InitialDirContext .

Por ahora, lo único a entender es que el programa por defecto identifica al serveridor LDAP en la máquina local. Si nuestro sevidor LDAP está en otra máquina o está usando otro puerto, tendremos que editar adecuadamente la URL de LDAP ("ldap://localhost:389/o=JNDITutorial").

Las instrucciones para configurar el servidor LDAP de ejemplo para este tutorial se dan en la sección Preparaciones.

Obtener Atributos de un Objeto Directorio

Luego, usamos getAttributes() para obtener los atributos de un objeto. El siguiente código recupera todos los atributos asociados con el objeto unido al nombre "cn=Ted Geisel, ou=People".

Attributes attrs = ctx.getAttributes("cn = Ted Geisel, ou=People");

Extraer el Atributo Deseado

Desde un conjunto de atributos, Attributes, podemos solicitar un atributo particular usando Attributes.get() y luego obtener el valor de ese atriuto. La siguiente línea primero obtiene el atributo surname "sn" y luego llama a Attribute.get() para obtener sy valor.

attrs.get("sn").get();

Capturar NamingException

Las llamadas a métodos mostradas hasta ahora pueden lanzar una NamingException.

Por esta razón, necesitamos envolver estas llamadas dentro de bloques try/catch.

Aquí está el fragmento de código repetido con la clausula try/catch.

try {

    // Create the initial directory context
    DirContext ctx = new InitialDirContext(env);
	    
    // Ask for all attributes of the object 
    Attributes attrs = ctx.getAttributes("cn=Ted Geisel, ou=People");

    // Find the surname attribute ("sn") and print it
    System.out.println("sn: " + attrs.get("sn").get());

} catch (NamingException e) {
    System.err.println("Problem getting attribute:" + e);
}

Compilar el Programa

Luego, compilamos el fichero fuente usando el compilador Java. Como con el ejemplo anterior, para hacer esto necesitamos acceso a las clases JNDI.

Si la compilación tiene éxito, el compilador creará un fichero llamado Getattr.class en el mismo directorio (o carpeta) que el fichero fuente (Getattr.java).

Si la compilación falla, debemos asegurarnos de haber tecleado correctamente el nombre del fichero fuente, usando las maýusculas apropidas. Si todavía tenemos problemas podemos vistar la lección Problemas comunes en busca de ayuda.

Ejecutar el Programa

Como con el ejemplo anterior, necesitamos acceder a las clases JNDI, y a la clase de nuestro ejemplo  Getattr.class. También necesitamos acceder a las clases del proveedor de servicios LDAP (ldap.jar y providerutil.jar). Si estámos usando Java 2 SDK, v1.3, estas clases ya estarán incluidas.

Aquí tenemos un ejemplo de una línea de comandos para ejecutar Getattr y la salida que genera.

# java Getattr 
sn: Geisel

Recuerda que el programa fue configurado con la siguiente propiedad:

env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

Con esta configuración, este comando consulta al servidor LDAP en la máquina localhost que está escuchando en el puerto 389, siriviendo el espacio de nombres "o=JNDITutorial".

(Puedes ver la sección Preparaciones para más detalles sobre este paso de configuración). Le pide los atributos de la entrada cn=Ted Geisel, ou=People . Una vez que tiene los atributos, extrae el atributo surname ("sn").

Si tienes problemas al ejecutar este ejemplo, puedes visitar la lección Problemas Comunes.


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