JNDI: acceso a propiedades de entorno (web.xml)

Ramiro Lago (Noviembre 2005)

Introducción

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.

Código fuente.



Enumerar los vínculos

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>");
	    }



Volver al índice