package docen_jndi;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.naming.*;

/********************************************************************************
 * Servlet que lee propiedades de entorno (enviroment) definidas en web.xml.
 ********************************************************************************/
public class enviroment extends HttpServlet {

   /********************************************************************************
    * Petición GET. Crea un contexto inicial sin especificar propiedades. Toma por
    * defecto las propiedades del entorno (contexto) de aplicación definidas en web.xml
    ********************************************************************************/
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      Context contexto = null;

      String servidorHttp = "";
      String resultado = "";

      try
      {
	 contexto = new InitialContext(); // Equivalente: new InitialContext(null).
	 if ( contexto == null )
	    resultado = new String("Error al crear el contexto");
	 else {
	    resultado = new String("Se ha creado el contexto");
	    //// Busca propiedad de entorno
	    servidorHttp = (String) contexto.lookup("java:comp/env/ejemplos/server");
	 }

      }
      catch(NamingException e) {               // Ha fallado lookup()
	 resultado = new String(e.toString());
      }
      catch(Exception e) {
	 resultado = new String(e.toString());
      }
      finally {
	 //// Escribo página con resultado de la búsqueda
	 out.println("<html>");
	 out.println("<head><title>Ejemplo de Servlet y JNDI</title></head>");
	 out.println("<body bgcolor=\"#FFFF9D\"><font color=\"#000080\" FACE=\"Arial,Helvetica,Times\" SIZE=2>");
	 out.println("<CENTER><H3>Usa JNDI para recuperar propiedades de web.xml</H3></CENTER><HR>");
	 out.println("<P>" + resultado + "</P>");
	 out.println("<p>El nombre del servidor es: " + servidorHttp + "</p>");
	 out.println("<p>Enumeración de vínculos:</p><ul>");
	 try {
	    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>");
	    }
	 }
	 catch (NamingException ne) { }

	 out.println("</ul></font></body></html>");
	 out.close();
      }
   }

   /********************************************************************************
    * Reenvia a petición GET
    ********************************************************************************/
   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doGet(request, response);
   }
}
