Introducción al Entorno
JNDI es un interface genérico. Para acceder a cualquier servicio de
nombres/directorios, debemos especificar el proveedor
de servicio a utilizar. Esto es sólo una parte de la información de
configuración. Dependiendo del servicio de nombres/directorio y del proveedor
de servicios podríamos necesitar especificar otra información de
configuración, por ejemplo, decirle al proveedor de servicios que servidor
utilizar. Especificamos la informacion de configuración en el JNDI usando
propiedades de entorno. Aunque esta sección describe muchas propiedades de
entorno, en general sólo necesitaremos usar una pocas.
Aquí tenemos los distintos tipos de propiedades de entorno, categorizadas
por su ámbito y aplicabilidad.
Propiedades Estándar de Entorno JNDI
El JNDI define propiedades de entorno que son estándars para todos los
proveedores de servicios. No todas las propiedades estándars se pueden aplicar
a todos los proveedores de servicios. Pero cuando un proveedor de servicios usa
una de estas propiedades, debe interpretarla de acuerdo a la definición
especificada por el JNDI.
Estas propiedades tienen el prefijo "java.naming."
Los interfaces Context y LdapContext
declaran constantes para estas propiedades. Aquí tenemos una lista de las
propiedades estándars de entorno JNDI.
| Property Name |
Description |
| java.naming.applet |
Un ejemplar de java.applet.Applet. Los parámetros de este
ejemplar de applet se usan como ciertas propiedades de entono. Ver la siguiente
sección para más detalles.
Constante: Context.APPLET
Default: Niinguno.
|
| java.naming.authoritative |
Un string ("true" o "false")
que especifica la fuente autoritaria del servicio solicitado. Si seleccionamos
esta propiedad a "true", cuando le solicitamos al
proveedor de servicio la fuente de servicio más autoritaria (como un servidor
maestro). De otra forma, la fuente, no tiene (pero puede ser) autoritaria.
Constante: Context.AUTHORITATIVE
Default: "false" |
| java.naming.batchsize |
La representación string de un entero que especifica el tamaño del caché
preferido a utilizar cuando se devuelven datos mediante el protocolo del
servicio. Puedes ir a la lección Búsquedas
para ver más detalles y ejemplos.
Constante: Context.BATCHSIZE
Default: Valor por defecto del proveedor.
Ejemplo: "10" |
| java.naming.dns.url |
Un string URL que especifica los nombres del host DNS y de dominio a usar
para la implementación del contexto "jndi".
Constante: Context.DNS_URL
Default: Ninguna.
Ejemplo: "dns://dnsserver/wiz.com" |
| java.naming.factory.control |
Una lista separa por dos puntos de nombres de clases de factorías
de control. Cada clase debe implementar el interface ControlFactory.
Esta propiedad la usa ControlFactory.getControlInstance(),
que a su vez es usado por los proveedores de servicos. Puedes ir a la lección Controles
y Extensiones para ver más detalles.
Constante: LdapContext.CONTROL_FACTORIES
Default: La lista vacía.
Ejemplo: "com.wiz.jndi.ldap.ControlFactory:
vendorX.ldap.VendorXControlFactory" |
| java.naming.factory.initial |
Nombre de la clase de la factoría de contexto inicial. La clase debe
implementar el interface InitialContextFactory.
Esta clase es ejemplarizada por el constructor de InitialContext.
Debemos configurar esta propiedad, a menos que sólo queramos pasar nombres
URL a los métodos de InitialContext.
Constante: Context.INITIAL_CONTEXT_FACTORY
Default: Ninguno.
Ejemplo: "com.sun.jndi.ldap.LdapCtxFactory"
|
| java.naming.factory.object |
Una lista separada por dos puntos de nombres de clases Factorías
de objetos. Cada clase debe implementar los interfaces ObjectFactory o DirObjectFactory.
Esta propiedad la usan NamingManager.getObjectInstance()
y DirectoryManager.getObjectInstance(), que su vez son usados por los proveedores de servicio. Puedes ir a la sección Objetos Java Objects y el Directorio para ver más detalles.
Constante: Context.OBJECT_FACTORIES
Default: La lista vacía.
Ejemplo: "com.wiz.jndi.ldap.AttrsToRemote:
com.wiz.jndi.ldap.AttrsToCorba" |
| java.naming.factory.state |
Una lista separada por dos puntos de nombres de clases de factorías
de estado. Cada clase debe implementar los intefaces StateFactory o DirStateFactory.
Esta propiedad la usan NamingManager.getStateToBind()
y DirectoryManager.getStateToBind(), que a su vez es usada por el proveedor del servicio. Puedes ir a la sección Objetos
Java y el Directorio para ver más detalles.
Constante: Context.STATE_FACTORIES
Default: La lista vacía.
Ejemplo: "com.wiz.jndi.ldap.RemoteToAttrs:com.wiz.jndi.ldap.CorbaToAttrs" |
| java.naming.factory.url.pkgs |
Una lista separada por dos puntos de prefijos de paquetes de factorías de
contexto URL. El prefijo consiste en la id del esquema URL y un sufijo para
construir el nombre de la clase, de esta forma.
prefix.schemeId.schemeIdURLContextFactory
Por ejemplo, supongamos que el prefijo es "vendorZ.jndi"
y la id del esquema URL es "ldap", el nombre completo
de la clase es vendorZ.jndi.ldap.ldapURLContextFactory. Cada
clase cuyo nombre se construya de esta forma debe implementar los interfaces
ObjectFactory
o DirObjectFactory
y seguir las reglas de procesamiento de nombres URL. El prefijo del paquete "com.sun.jndi.url"
siempre se añade al final de la lista especificada para esta propiedad. Esta
propiedad se usa cuando un nombre de URL se pasa a los métodos InitialContext.
Puedes ir a la lección URL para
ver más información.
Constante: Context.URL_PKG_PREFIXES
Default: La lista vacía.
Ejemplo: com.wiz.jndi.url:vendorZ.jndi |
| java.naming.language |
Un string que especifica el idioma preferido para usarlo con este servicio.
Los valores de está propiedad están definidos por la RFC
1766.
Constante: Context.LANGUAGE
Default: El valor por defecto del proveedor.
Ejemplo: "en-US" |
| java.naming.provider.url |
Una string URL para configurar el proveedor de servicio especificado por la
propiedad "java.naming.factory.initial".
Constante: Context.PROVIDER_URL
Default: El valor por defecto del proveedor.
Ejemplo: "ldap://localhost:389/o=JNDITutorial" |
| java.naming.referral |
Un string que especifica cómo debería manejar las referencias el proveedor
de servicio, una de "throw", "ignore",
o "follow". Puedes ir a la lección Referencias
para ver detalles y ejemplos.
Constante: Context.REFERRAL
Default: El valor por defecto del proveedor.
Ejemplo: "throw" |
| java.naming.security.authentication |
Un string que especifica el tipo de autentifiación a utilizar; uno de "none",
"simple", "strong", un
string específico del proveedor. Puedes ir a la lección Seguridad
para ver más detalles y ejemplos.
Constante: Context.SECURITY_AUTHENTICATION
Default: El valor por defecto del proveedor.
Ejemplo: "simple" |
| java.naming.security.credentials |
Un objeto que espeifica las credenciales de la entidad que realiza la
autentificación. Su tipo está determinado por el proveedor de servicios.
Puedes ir a la lección Seguridad
para ver más detalles y ejemplos.
Constante: Context.SECURITY_CREDENTIALS
Default: El valor por defecto del proveedor.
Ejemplo: Un char[] que contenga "secret." |
| java.naming.security.principal |
Un string que especifica la identidad que realiza la autentificación.
Puedes ir a la lección Seguridad
para ver más detalles y ejemplos.
Constante: Context.SECURITY_PRINCIPAL
Default: El valor por defecto del proveedor.
Ejemplo: "cn=Directory Manager, o=JNDITutorial" |
| java.naming.security.protocol |
Un string que especifica el protocolo de seguridad a utilizar. Puedes ir a
la lección Seguridad
para ver más detalles y ejemplos.
Constante: Context.SECURITY_PROTOCOL
Default: El valor por defecto del proveedor.
Ejemplo: "ssl" 1 |
Propiedades de Entorno Específicas del Servicio
Las propiedades de entorno específicas del servicio son comunes entre
diferentes proveedores de servicio que implementan un protocolo o servicio
particular. Por ejemplo, varios proveedores de servicios diferentes podrían
implementar LDAP. Estos
proveedores usarían propiedades de entorno específicas de LDAP.
Las propiedades específicas del servicio tienen el prefijo "java.naming.servicio."
Por ejemplo, las propiedades específicas de LDAP tienen el prefijo "java.naming.ldap."
y las propiedades específicas CORBA tienen el prefijo "java.naming.corba."
Observa que estas son propiedades de entorno relacionadas con el JNDI y son
usadas por los proveedores de servicios JNDI. Un servicio o subsistema como
CORBA o RMI podría definir otras propiedades no relacionadas con el JNDI.
Puedes ir a la lección Miscelánea
para ver ejemplos de propiedades de entorno específicas de LDAP.
Propiedades de Entorno Específicas de la Característica
Las propiedades de entorno específicas de la característica son comunes a
todos los proveedores de servicios que implementan una característica
particular. Por ejemplo, el proveedor de servicio LDAP y un proveedor de
servicio VendorX podrían usar SASL
para autentificación. Estos proveedores usarán propiedades de entorno
específicas de SASL cuando configuren esta característica.
Estas propiedades tienen el prefijo "java.naming.característica."
Por ejemplo, las propiedades específicas de SASL tienen el prefijo "java.naming.security.sasl."
Observa que estas son propiedades de entorno relacionadas con el JNDI y usadas
por los proveedores de servicios JNDI. Una característica o subsistema como
SASL podría definir otras propiedades no relacionadas con el JNDI. Puedes ir a
la lección Seguridad
para ver algunos ejemplos de propiedades específicas de SASL.
Propiedades de Entorno Específicas del Proveedor
Las propiedades de etorno específicas del proveedor son propiedades que
són usadas por un sólo proveedor. Por ejemplo, el proveedor de servicios LDAP
de Sun tiene una propiedad para activar el seguimiento. (ver el ejemplo de la
lección FAQ.) Una
propiedad específica del proveedor debería tener un prefijo que refleje su
identidad única, normalmente el nombre del paquete del proveedor de servicio.
Por ejemplo, la propiedad de seguimiento del proveedor LDAP de Sun se llama "com.sun.jndi.ldap.trace.ber".