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:


Especificar Propiedades de Entorno

Podemos especificar propiedades de entorno para el JNDI usando el parámetro de entorno del constructor de InitialContext y ficheros de recursos de aplicación. También se podrían especificar varias propiedades de entorno JNDI usando propiedades del sistema y parámetros de applet, como se describe en secciones posteriores.

Ficheros de Recursos de Aplicación

Para simplificar la tarea de configurar el entorno necesario para una aplicación JNDI, podríamos distribuir ficheros de recursos de aplicación junto con los componentes de la aplicación y los proveedores de servicios. Un fichero de recursos de aplicación tiene el nombre jndi.properties. Contiene una lista de parejas clave/valor presentadas en el formato de fichero de propiedades (ver java.util.Properties).

La clave es el nombre de la propiedad (por ejemplo, java.naming.factory.object) y el valor es un string en el formato definido para esa propiedad.

Aquí tenemos un ejemplo de un fichero de recursos de aplicación.

java.naming.factory.object=com.sun.jndi.ldap.AttrsToCorba:com.wiz.from.Person
java.naming.factory.state=com.sun.jndi.ldap.CorbaToAttrs:com.wiz.from.Person
java.naming.factory.control=com.sun.jndi.ldap.ResponseControlFactory
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
java.naming.provider.url=ldap://localhost:389/o=jnditutorial
com.sun.jndi.ldap.netscape.schemaBugs=true

Observamos que no se aplican restricciones sobre los tipos de propiedades de entorno que podemos tener en este fichero.

El JNDI lee automáticamente el ficheros de recursos de aplicación desde los classpaths de todos los componentes y desde JAVA_HOME/lib/jndi.properties, donde JAVA_HOME es el directorio que contiene nuestro JRE (Java Runtime Environment). El JNDI pone las propiedades de estos ficheros a disposición de los proveedores de servicios y de otros componentes que necesiten utilizarlas. Por lo tanto estos ficheros deben considerarse como abiertos a todo el mundo y no deberían contener información sensible, como passwords, etc.

Nota:

Excepto para JAVA_HOME/lib/jndi.properties, los ficheros de recursos de aplicación sólo se soportan cuando se usa la Plataforma Java 2. Si usamos el JDK 1.1, sólo podremos ver JAVA_HOME/lib/jndi.properties.

Por ejemplo, abajo tenemos un programa que lista un contexto sin especificar ninguna propiedad de entorno en el constructor de InitialContext.

InitialContext ctx = new InitialContext();
NamingEnumeration enum = ctx.list("");

Si ejecutamos este programa con el fichero jndi.properties mostrado anteriormente, listará los contenidos de la entrada o=jnditutorial en el servidor LDAP especificado.

El uso de ficheros de recursos de aplicación para especificar cualquier propiedad de entorno JNDI permite configurar al JNDI con una programación mínima. Usando el fichero JAVA_HOME/lib/jndi.properties, también podemos configurar el JNDI para todas las aplicaciones y applets JNDI que usen el mismo interprete Java.

Si usamos ficheros de recursos de aplicación, debemos recordar conceder a nuestro applet o aplicación los permisos para leer todos los ficheros de recursos de aplicación.

Propiedades del Sistema

Una propiedad del sistema es una pareja clave/valor que el entorno de ejecución java define para describir al usuario, en entorno del sistema y el sistema java. El entorno de ejecución define y usa un conjunto de propiedades del sistema por defecto. Se pueden poner otras propiedades a disposicion de un programa Java mediante la opción -D de la línea de comandos del intérprete java. Por ejemplo, ejecutando el intérprete de la siguiente forma.

# java -Dmyenviron=abc Main

se añade la propiedad myenviron con el valor abc a la lista de propiedades del sistema visible para el programa Main.

La clase java.lang.System contiene métodos estáticos para leer y actualizar propiedades del sistema. La habilidad de leer o actualizar cualquier propiedad del sistema está controlado por la política de seguridad del sistema de ejecución Java.

El JNDI lee las siguientes propiedades estándars JNDI desde las propiedades del sistema.

java.naming.factory.initial
java.naming.factory.object
java.naming.factory.state
java.naming.factory.control
java.naming.factory.url.pkgs
java.naming.provider.url
java.naming.dns.url	

Cuando configuramos propiedades del sistema, estas propiedades de entorno afectan a los contextos de todas las aplicaciones o applets (si el applet tiene permisos para leer dichas propiedades).

Usando el mismo programa del ejemplo de fichero de recursos de aplicación anterior, especificando la factoría de contexto inicial a usar dando el contexto inicial a utilizar en la línea de comandos. Aquí tenemos dos ejemplos.

# java -Djava.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory \
      -Djava.naming.provider.url=ldap://localhost:389/o=jnditutorial \
      List
# java -Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory \
      -Djava.naming.provider.url=file:/tmp \
      List 

El primer ejemplo usa LDAP, y el segundo usa el sistema de ficheros.

Usar las propiedades del sistema para especificar propiedades de entorno estándar JNDI permite configurar el JNDI con una programación mínima. Sin embargo, probablemente sólo es conveniente usarlas desde scripts. Esto es por que los ítems con nombres de propiedades largos deben especificarse sobre la línea de comandos. También, los applets generalmente no tienen permiso para leer propiedades del sistema arbitrarias y debe concedersele explícitamente el permiso para hacerlo.

Parámetros de Applet

Podemos pasarle parámetros a un applet usando una sencilla pareja clave/valor. Estas se especifican en el fichero HTML que referencia al applet.

El cómo se especifican dependen del contexto del applet. Por ejemplo, si el applet es referenciado desde una etiqueta applet, especificaremos los parámetros usando la etiqueta param. Aquí tenemos un ejemplo.

<param 
name=java.naming.factory.initial
value=com.sun.jndi.ldap.LdapCtxFactory>

<param
name=java.naming.provider.url
value=ldap://localhost:389/o=jnditutorial>

Si el applet es referenciado desde el Java Plug-in, especificaremos sus parámetros usando parejas de clave/valor.

Aquí tenemos un ejemplo.

java.naming.provider.url="ldap://localhost:389/o=jnditutorial"
java.naming.factory.initial="com.sun.jndi.ldap.LdapCtxFactory"

Para que el JNDI acceda a los parámetros de un applet, debemos configurar la propiedad de entorno Context.APPLET ("java.naming.applet"). El JNDI lee las siguientes propiedades estándars del JNDI desde los parámetros del applet.

java.naming.factory.initial
java.naming.factory.object
java.naming.factory.state
java.naming.factory.control
java.naming.factory.url.pkgs
java.naming.provider.url
java.naming.dns.url	

Aquí tenemos un ejemplo que añade una propiedad ("java.naming.applet") al entorno.

// Put this applet instance into the environment
Hashtable env = new Hashtable();
env.put(Context.APPLET, this);

// Pass the environment to the initial context constructor
Context ctx = new InitialContext(env);

// List the objects 
NamingEnumeration enum = ctx.list(target);
while (enum.hasMore()) {
     out.println(enum.next());
}
ctx.close();

El JNDI obtiene las propiedades de entorno necesarias desde los parámetros del applet (mostrados anteriormente).

Este uso de los parámetros de applets para especificar propiedades de entorno JNDI estándars permite configurar al JNDI  de la misma forma que un applet realiza normalmente la configuración de otros subsistemas o componentes. Las propiedades del sistema y los ficheros de recursos de aplicación no son buenos mecanismos para que los applets dependan de ellos.

Porque los applets normalmente no pueden leer propiedades del sistema o ficheros arbitrarios (incluyendo jndi.properties).


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