En un capítulo anterior se ha introducido el concepto de JNDI.
Ahora vamos a mostrar un servlet que usa de JNDI para acceder a propiedades definidas en el archivo web.xml. Supongamos que tenemos una serie de propiedades definidas en web.xml con la forma env-entry:
<env-entry>
<env-entry-name>ejemplos/server</env-entry-name>
<env-entry-value>http://chunda.com</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
El servlet en doGet() toma un contexto inicial vacio o "por defecto", es decir, el conjunto de nombres definido en web.xml. Observar que llamamos a InitialContext() sin argumentos; esto implica pedir un contexto vacio de propiedades o, lo que es lo mismo, el contexto de nombres definido en web.xml.
Con lookup() buscamos la entrada "ejemplos/server":
try {
contexto = new InitialContext(); // Equivalente: new InitialContext(null).
//// Busca propiedad de entorno
servidorHttp = (String) contexto.lookup("java:comp/env/ejemplos/server");
}
catch(NamingException e) { // Ha fallado lookup()
resultado = new String(e.toString());
}
Invocar al servlet de ejemplo.
Podemos enumerar todos los vinculos (bindings):
NamingEnumeration bindings = contexto.listBindings("java:comp/env/ejemplos");
while (bindings.hasMore()) {
Binding bd = (Binding) bindings.next();
out.println( "<li>" + bd.getName() + ": " + bd.getObject() + ", " +
bd.getObject().getClass().getName() +"</li>");
}