
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.naming.*;


public class SystemDump extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html";
    private ServletConfig Config;
    private ServletContext Context;

    /**Initialize global variables*/
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }


    /**Process the HTTP Get request*/
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.Config = this.getServletConfig();
        this.Context = this.getServletContext();

        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>SystemDump</title></head>");
        out.println("<body><table border>");

        out.println("<tr><td colspan=2><b>System Properties:</b></td></tr>");

        SortedMap props = new TreeMap( System.getProperties() );
        Iterator it = props.entrySet().iterator();
        while( it.hasNext() ) {
               Map.Entry me = (Map.Entry) it.next();
               out.println("<tr><td>" + me.getKey() + "</td><td>" + me.getValue() + "</td></tr>");
        }

        Enumeration enum = Context.getInitParameterNames();
        out.println("<tr><td colspan=2><b>&lt;web-app&gt;&lt;context-param&gt;&lt;/web-app&gt; Parameters for " + this.getServletName()+ "<br>");
        while (enum.hasMoreElements()) {
              Object el = enum.nextElement();
              out.println("<tr><td>" + el.toString() + "</td><td>" + Context.getInitParameter( el.toString() )  + "</td></tr>");
        }

        enum = Config.getInitParameterNames();
        out.println("<tr><td colspan=2><b>&lt;servlet&gt;&lt;init-param&gt;&lt;/servlet&gt; Parameters for " + Config.getServletName() + "</b></td></tr>");
        while (enum.hasMoreElements()) {
              Object el = enum.nextElement();
              out.println("<tr><td>" + el.toString() + "</td><td>" + Config.getInitParameter( el.toString() )  + "</td></tr>");
        }

        out.println("<tr><td colspan=2><b>java:comp/env entries for " + Config.getServletName() + "</b></td></tr>");
        try {
            Context initCtx = new InitialContext();
            NamingEnumeration ne = initCtx.listBindings("java:comp/env");
            while (ne.hasMore()) {
                Binding binding = (Binding)ne.next();
                out.println("<tr><td>" + binding.getName() + "</td><td>" + binding.getObject()  + " [<i>" + binding.getClassName() + "</i>]</td></tr>");
            }
        }
        catch (Exception ex) {
              out.println("Exception caught: " + ex.toString());
        }




    //    out.println("<tr><td>" + x + "</td><td>" + x + "</td></tr>");

        out.println("</table></body></html>");
    }


    /**Clean up resources*/
    public void destroy() {
    }
}