首页  

j2ee容器类加载机制实例演示     所属分类 tomcat 浏览量 115
tomcat8.5.32


获取jsp的类加载信息



	public static List<ClassLoader> getClassLoaderList(Class cls) {
		if (cls == null) {
			return null;
		}
		ClassLoader cl = cls.getClassLoader();
		List<ClassLoader> list = new ArrayList<ClassLoader>();
		while (cl != null) {
			list.add(cl);
			cl = cl.getParent();
		}
		return list;
	}
	


[
    "org.apache.jasper.servlet.JasperLoader@70c756b6",
    "ParallelWebappClassLoader\r\n  context: ROOT\r\n  delegate: false\r\n----------> Parent Classloader:\r\njava.net.URLClassLoader@1218025c\r\n",
    "java.net.URLClassLoader@1218025c",
    "sun.misc.Launcher$AppClassLoader@42a57993",
    "sun.misc.Launcher$ExtClassLoader@6b143ee9"
]

public class org.apache.jasper.servlet.JasperLoader extends java.net.URLClassLoader

package org.apache.catalina.loader;
public class ParallelWebappClassLoader extends WebappClassLoaderBase {

public abstract class WebappClassLoaderBase extends URLClassLoader


protected boolean delegate = false;

delegate 具体含义

Should this class loader delegate to the parent class loader before searching its own repositories 
(i.e. the usual Java2 delegation model)?  
If set to false,this class loader will search its own repositories first, 
and delegate to the parent only if the class or resource is not found locally. 
Note that the default, false, is the behavior called for by the servlet specification.


URLClassLoader 
public URL[] getURLs() 

返回具体的类加载路径

org.apache.jasper.servlet.JasperLoader  jsp加载器

TOMCAT_HOME/work/Catalina/localhost/ROOT/

ParallelWebappClassLoader  web应用加载器
TOMCAT_HOME/webapps/$WEBAPP/WEB-INF/classes
TOMCAT_HOME/webapps/$WEBAPP/WEB-INF/lib/*.jar


java.net.URLClassLoader@1218025c  tomcat容器加载器
TOMCAT_HOME/lib
TOMCAT_HOME/lib/*.jar


sun.misc.Launcher$AppClassLoader@42a57993    tomcat 启动类加载器

TOMCAT_HOME/bin/bootstrap.jar
TOMCAT_HOME/bin/tomcat-juli.jar

    
sun.misc.Launcher$ExtClassLoader@6b143ee9  jdk 加载器 

JDK_HOME/jre/lib/ext/*.jar



{ "result": [ "org.apache.jasper.servlet.JasperLoader@4fff3bbe", "ParallelWebappClassLoader\r\n context: ROOT\r\n delegate: false\r\n----------> Parent Classloader:\r\njava.net.URLClassLoader@1218025c\r\n", "java.net.URLClassLoader@1218025c", "sun.misc.Launcher$AppClassLoader@42a57993", "sun.misc.Launcher$ExtClassLoader@6b143ee9" ], "urlsInfo": { "ParallelWebappClassLoader\r\n context: ROOT\r\n delegate: false\r\n----------> Parent Classloader:\r\njava.net.URLClassLoader@1218025c\r\n": [ "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/classes/", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/devtool-1.0.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/ehcache-3.8.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/FastInfoset-1.2.15.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/fastjson-1.2.55.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/gson-2.8.2.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/guava-16.0.1.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/istack-commons-runtime-3.0.7.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/javax.activation-api-1.2.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/jaxb-api-2.3.1.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/jaxb-runtime-2.3.1.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/jna-4.5.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/leveldb-0.7.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/leveldb-api-0.7.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/log4j-1.2.17.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/logback-classic-1.2.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/logback-core-1.2.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/metrics-core-3.1.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/simpleclient-0.6.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/simpleclient_common-0.6.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/simpleclient_hotspot-0.6.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/simpleclient_servlet-0.6.0.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/stax-ex-1.8.jar", "file:/Users/dugang/soft/apps/benchmark8010/webapps/ROOT/WEB-INF/lib/txw2-2.3.1.jar" ], "sun.misc.Launcher$AppClassLoader@42a57993": [ "file:/Users/dugang/soft/apps/benchmark8010/bin/bootstrap.jar", "file:/Users/dugang/soft/apps/benchmark8010/bin/tomcat-juli.jar" ], "org.apache.jasper.servlet.JasperLoader@4fff3bbe": [ "file:/Users/dugang/soft/apps/benchmark8010/work/Catalina/localhost/ROOT/" ], "sun.misc.Launcher$ExtClassLoader@6b143ee9": [ "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/cldrdata.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/dnsns.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/jaccess.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/jfxrt.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/localedata.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/nashorn.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/sunec.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/zipfs.jar", "file:/System/Library/Java/Extensions/MRJToolkit.jar" ], "java.net.URLClassLoader@1218025c": [ "file:/Users/dugang/soft/apps/benchmark8010/lib/", "file:/Users/dugang/soft/apps/benchmark8010/lib/annotations-api.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/catalina-ant.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/catalina-ha.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/catalina-storeconfig.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/catalina-tribes.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/catalina.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/ecj-4.6.3.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/el-api.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/jasper-el.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/jasper.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/jaspic-api.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/jsp-api.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/servlet-api.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-api.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-coyote.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-dbcp.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-i18n-es.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-i18n-fr.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-i18n-ja.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-jdbc.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-jni.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-util-scan.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-util.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/tomcat-websocket.jar", "file:/Users/dugang/soft/apps/benchmark8010/lib/websocket-api.jar" ] } }
eclipse 使用 jetty 插件 获取类加载信息 { "result": [ "org.apache.jasper.servlet.JasperLoader@64c348a0", "WebAppClassLoader=benchmark@7ca48474", "sun.misc.Launcher$AppClassLoader@764c12b6", "sun.misc.Launcher$ExtClassLoader@17d10166" ], "urlsInfo": { "WebAppClassLoader=benchmark@7ca48474": [ "file:/Users/dugang/fun/hellocode/project/benchmark/target/classes/", "file:/Users/dugang/m2/org/iq80/leveldb/leveldb/0.7/leveldb-0.7.jar", "file:/Users/dugang/m2/com/google/guava/guava/16.0.1/guava-16.0.1.jar", "file:/Users/dugang/m2/org/iq80/leveldb/leveldb-api/0.7/leveldb-api-0.7.jar", "file:/Users/dugang/m2/org/ehcache/ehcache/3.8.0/ehcache-3.8.0.jar", "file:/Users/dugang/m2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar", "file:/Users/dugang/m2/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar", "file:/Users/dugang/m2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar", "file:/Users/dugang/m2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar", "file:/Users/dugang/m2/com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.jar", "file:/Users/dugang/m2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar", "file:/Users/dugang/m2/com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.jar", "file:/Users/dugang/m2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar", "file:/Users/dugang/m2/ch/qos/logback/logback-classic/1.2.0/logback-classic-1.2.0.jar", "file:/Users/dugang/m2/ch/qos/logback/logback-core/1.2.0/logback-core-1.2.0.jar", "file:/Users/dugang/m2/com/alibaba/fastjson/1.2.55/fastjson-1.2.55.jar", "file:/Users/dugang/m2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar", "file:/Users/dugang/m2/log4j/log4j/1.2.17/log4j-1.2.17.jar", "file:/Users/dugang/fun/hellocode/project/devtool/target/classes/", "file:/Users/dugang/m2/io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar", "file:/Users/dugang/m2/io/prometheus/simpleclient/0.6.0/simpleclient-0.6.0.jar", "file:/Users/dugang/m2/io/prometheus/simpleclient_servlet/0.6.0/simpleclient_servlet-0.6.0.jar", "file:/Users/dugang/m2/io/prometheus/simpleclient_common/0.6.0/simpleclient_common-0.6.0.jar", "file:/Users/dugang/m2/io/prometheus/simpleclient_hotspot/0.6.0/simpleclient_hotspot-0.6.0.jar", "file:/Users/dugang/m2/net/java/dev/jna/jna/4.5.0/jna-4.5.0.jar" ], "sun.misc.Launcher$AppClassLoader@764c12b6": [ "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/eclipse-jetty-starters-common.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/eclipse-jetty-starters-util.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/eclipse-jetty-starters-console.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/eclipse-jetty-starters-embedded.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/javax.servlet.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-server.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-continuation.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-http.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-io.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-util.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-security.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-servlet.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-webapp.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-xml.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-jsp.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/javax.servlet.jsp.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/org.apache.jasper.glassfish.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/javax.servlet.jsp.jstl.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/org.apache.taglibs.standard.glassfish.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/javax.el.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/com.sun.el.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/org.eclipse.jdt.core.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-annotations.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/javax.annotation.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/org.objectweb.asm.jar", "file:/Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/916/0/.cp/lib/jetty/jetty-plus.jar" ], "sun.misc.Launcher$ExtClassLoader@17d10166": [ "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/cldrdata.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/dnsns.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/jaccess.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/jfxrt.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/localedata.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/nashorn.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/sunec.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar", "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext/zipfs.jar", "file:/System/Library/Java/Extensions/MRJToolkit.jar" ], "org.apache.jasper.servlet.JasperLoader@64c348a0": [ "file:/private/var/folders/w6/2wzjcqzn4njd5z_df4whdzzr0000gn/T/jetty-0.0.0.0-8080-webapp-_-any-/jsp/" ] } }

上一篇     下一篇
slf4j为什么用{}而不是%s

java获取系统信息

mysql MVCC 和 事务隔离级别

tomcat类加载器

java类卸载机制

分布式事务