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 Nombrado

Este ejemplo muestra como escribir un programa que localiza un objeto cuyo nombre es pasado como un argumento de la línea de comandos. Usa un proveedor de servicios para el sistema de ficheros. Por lo tanto el nombre que suministramos al programa debe ser un nombre de fichero. En este momento no necesitamos entender los detalles del proveedor de servicios.

Importar las clases JNDI

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

Podemos importar el paquete completo o sólo las clases individuales y los interfaces. El siguiente código importa las clases usadas del paquete javax.naming:.

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

Crear un Contexto Inicial

En el método main() del programa, creamos un contexto inicial.

Indicamos que estamos usando el proveedor de servicios del sistema de ficheros seleccionado el parámetro propiedades de entorno (representado por una clase Hashtable) al constructor de InitialContext, de esta forma.

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.fscontext.RefFSContextFactory");

Context ctx = new InitialContext(env);

Localizar un Objeto

Luego, usamos Context.lookup() para localizar un objeto. El siguiente código localiza el objeto unido con el nombre suministrado en la línea de comandos.

Object obj = ctx.lookup(name);

Capturar NamingException

La creacción del contexto inicial y el método lookup() pueden lanzar una NamingException.

Por esta razón, nocesitamos encerrar estas llamadas dentro de un bloque try/catch.

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

try {
    // Create the initial context
    Context ctx = new InitialContext(env);

    // Look up an object
    Object obj = ctx.lookup(name);

    // Print it
    System.out.println(name + " is bound to: " + obj);
	    
} catch (NamingException e) {
    System.err.println("Problem looking up " + name + ": " + e);
}

Compilar el Programa

Luego, compilamos el fichero fuente usando el compilador Java. Para compilar el programa, debemos tener acceso a las clases JNDI. Si estamos usando el Java 2 SDK, v1.3, las clases JNDI ya estarán incluidas. De otro modo, podemos incluir las clases configurando la variable CLASSPATH para que incluya el jndi.jar que habremos descargado desde la web site de JNDI o instalando jndi.jar como una extensión. Puedes ver la lección Preparaciones  para los detalles sobre cómo instalar las clases JNDI y los proveedores de servicios.

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

Si la compilación falla, debemos asegurarnos de haber tecleado el nombre del programa exactamente como se muestra aquí, usando las mismas letras en mayúsculas. Si todavía sigue fallando podemos ver la lección Problemas comunes para más ayuda.

Ejecutar el Programa

Para ejecutar el programa, necesitamos acceso a las clases JNDI, al proveedor de servicios del sistema de ficheros y a nuestro fichero de ejemplo (Lookup.class).

Ver el paso de compilación para las instrucciones de como incluir el acceso a las clases JNDI. Para incluir las clases del proveedor de servicios del sistema de ficheros (fscontext.jar y providerutil.jar), o las incluimos en nuestra variable CLASSPATH o las instalamos como extensiones. Observa que estos ficheros no están incluidos con el Java 2 SDK, v1.3. Puedes ver la lección Preparaciones para los detalles sobre cómo instalar las clases JNDI y los proveedores de servicios. Finalmente, incluimos el directorio que contiene nuestro fichero Lookup.class en nuestra variable CLASSPATH.

Para ejecutar el programa, suministramos el nombre de un fichero de nuestro sistema de ficheros de esta forma.

# java Lookup /tmp

O de esta otra.

# java Lookup \autoexec.bat

Si sumistramos un directorio de ficheros, veremos algo como esto.

# java Lookup /tmp
/tmp is bound to: com.sun.jndi.fscontext.RefFSContext@1dae083f

Si el nombre que hemos suministrado es un fichero, veremos algo como esto.

/tmp/f is bound to: //tmp/f

Si tenemos algún problema al ejecutar este ejemplo, debemos ver la página 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