As an experiment, I placed a file in the webapp dir of a servlet (not in WEB-INF but in the directory above it) and attempted to read it using getResource(). What I found was that I could not locate the resource unless I used getServletContext().getResource().
Reading through the Classloading How-To, I am confused why this works. The how-to says that from the perspective of the webapp, loading takes place in this order: * Bootstrap classes of your JVM * System class loader classses (described above) * /WEB-INF/classes of your web application * /WEB-INF/lib/*.jar of your web application * $CATALINA_HOME/common/classes * $CATALINA_HOME/common/endorsed/*.jar * $CATALINA_HOME/common/lib/*.jar * $CATALINA_BASE/shared/classes * $CATALINA_BASE/shared/lib/*.jar But, what is the order for getServletContext() ? To try to figure this out, I ran another experiment: ClassLoader c1 = this.getClass().getClassLoader(); log(" this's classloader is " + c1.getClass().getName()); ClassLoader c2 = getServletContext().getClass().getClassLoader(); log(" servlet context's classloader is " + c2.getClass().getName()); Results: this's classloader is org.apache.catalina.loader.WebappClassLoader servlet context's classloader is org.apache.catalina.loader.StandardClassLoader The HowTo says the following classloaders exist: * Bootstrap * System * Common * Catalina * Shared * WebappX How is that some instance of StandarClassLoader able to access the webapp root? --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]