%@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(); } %>
<% // 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); } %>
<% 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(); } %>