La lecci�n Preparaciones describe como configurar un contexto incial para acceder a servicios de nombres/directorios mediante el JNDI. Por ejemplo, para usar el proveedor LDAP de Sun, usamos un c�digo que se parecer�a a este:
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"); Context ctx = new InitialContext(env); // ... do something useful with ctx
La clase InitialContext es s�lo una clase envoltura que accede a la implementaci�n del contexto real -- el ejemplar Context creado por la clase factor�a de contexto inicial nombrada por la propiedad de entorno Context.INITIAL_CONTEXT_FACTORY ("java.naming.factory.initial"). La clase factor�a debe implementar el interface InitialContextFactory. En el ejemplo anterior, la clase factor�a de contexto inicial era com.sun.jndi.ldap.LdapCtxFactory.
Para que una implementaci�n de contexto sea accesible desde el contexto incial, un proveedor de servicio debe proporcionar una clase que implemente el interface InitialContextFactory. Aqu� tenemos un ejemplo de una factor�a de contexto inicial para el ejemplo del espacio de nombres en forma de �rbol:
public class InitCtxFactory implements InitialContextFactory {
public Context getInitialContext(Hashtable env) {
return new HierCtx(env);
}
}
Este ejemplo es muy simple. Llama al constructor de HierCtx y devuelve un contexto vac�o. En una implementaci�n real, la factora�a de contexto incial debe crear un ejemplar de Context para alcanzar todas las otras apartes del espacio de nombres del servicio de nombres/directorio subyacente. Una implementaci�n real normalmente tambi�n usar�a la propiedad de entorno Context.PROVIDER_URL ( "java.naming.provider.url") para inicializar el contexto inicial. Por ejemplo, en el proveedor LDAP de Sun, la propiedad Context.PROVIDER_URL indica la direcci�n y el puerto de la m�quina del servidor de directorio, as� como el DN (nombre distinguido) de la ra�z del contexto de nombres a utilizar. En el ejemplo anterior, la direcci�n de la m�quina y el puerto eran localhost y 389 y el DN era "o=jnditutorial".