En un capítulo anterior se ha introducido el concepto de JNDI.
Ahora vamos a ver ejemplos en los que usamos como proveedor de servicio (del servidor) el sistema de archivos.
Para descargar un proveedor de servicios del Sistema de Archivos (file system) de Sun. En estos momento hay dos versiones, nosotros usamos la 1.1, que viene en fscontext-ea4.zip. Debemos poner en CLASSPATH las librerias que contiene: fscontext.jar y providerutil.jar.
Vamos a pedir al usuario un nombre de archivo o de directorio por teclado. La finalidad es que podamos obtener el objeto asociado. El inicio es utilizar un stream de teclado para pedir el nombre:
import java.util.*;
import javax.naming.*;
import java.io.*;
public class primeros_pasos01 {
public static void main(String[] args) {
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
try {
//// Pedir por teclado un nombre
System.out.print( "Indique un nombre:");
String name = entrada.readLine();
...
Lo siguiente es definir una Hashtable en la que indicamos que usaremos un sistema de archivos. A continuación usamos el método lookup() para buscar el nombre. Este método devuelve el objeto asociado o produce una excepción:
//// Indicamos que el contexto tiene como proveedor de servicio el sistema de archivos (fsContext)
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
//// Buscar el objeto
Object obj = ctx.lookup(name);
//// Mostrar
System.out.println("El nombre " + name + " esta ligado al objeto " + obj.toString());
Evidentemente debemos manejar las excepciones:
catch ( NamingException e ) {
System.out.println( e.toString() );
}
catch ( IOException e ) {
System.out.println( e.toString() );
}
Si hemos indicado el directorio /Temporal obtenemos:
El nombre /Temporal esta ligado al objeto com.sun.jndi.fscontext.RefFSContext@15b7986
Si hemos indicado el archivo /Temporal/Presentacion.ppt obtenemos:
El nombre /Temporal/Presentacion.ppt esta ligado al objeto \Temporal\Presentacion.ppt