<%@page contentType="text/html" import="java.io.*,java.security.*,javax.naming.*,org.jboss.test.web.util.*" %> <%! private String formatException(Throwable t) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); return sw.toString(); } %> JSP Debug Page

Classpath Access Tests

Access WEB-INF/classes/org/jboss/test/web/util/Util.class

<%
   // Access a class from the WEB-INF/classes directory
   try
   {
      Class clazz = Class.forName("org.jboss.test.web.util.Util");
      out.println("Successfully loaded class: "+clazz.getName());
      ClassLoader cl = clazz.getClassLoader();
      ProtectionDomain pd = clazz.getProtectionDomain();
      CodeSource cs = pd.getCodeSource();
      out.println("  ClassLoader : "+cl.getClass().getName()+':'+cl.hashCode());
      out.println("  CodeSource.location : "+cs.getLocation());
      Class clazz2 = org.jboss.test.web.util.Util.class;
      if( clazz2.equals(clazz) == false )
         throw new ServletException("ClassCastException for ClassInClasses.class");
      out.println("Static org.jboss.test.web.util.Util.class matches Class.forName");
   }
   catch(AccessControlException e)
   {
      // Ignore security manager related failures.
      e.printStackTrace();
   }
   catch(Exception e)
   {
      out.println("Failed");
      String dump = formatException(e);
      out.println(dump);
   }
%>

JSP ClassLoaders

<%
   try
   {
      ClassLoader loader = Thread.currentThread().getContextClassLoader();
      String loaders = util.displayClassLoaders(loader);
      out.println(loaders);
   }
   catch(AccessControlException e)
   {
      // Ignore security manager related failures.
      e.printStackTrace();
   }
   catch(Exception e)
   {
      throw new ServletException();
   }
 %>