前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用的ClassLoader分析

常用的ClassLoader分析

作者头像
MickyInvQ
发布2020-09-27 17:17:14
2880
发布2020-09-27 17:17:14
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏

我们创建一个简单的Web应用,里面只有一个HelloWorldServlet,然后在这个Servlet中打印加载它的ClassLoader,代码如下:

代码语言:javascript
复制
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response){
        ClassLoader classLoader = this.getClass().getClassLoader();
        while (classLoader!=null){
            System.out.println(classLoader.getClass().getCanonicalName());
            classLoader = classLoader.getParent();
        }
    }
}

将这个web应用通过方式配置在server.xml中,代码如下

代码语言:javascript
复制
    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context path = "/examples" docBase = "E:\workspace\webTest" reloadable = "true"/>

上面这段代码打印出来:

代码语言:javascript
复制
org.apache.catalina.loader.WebappClassLoader
org.apache.catalina.loader.standardClassLoader
sun.misc.Launcher$AppClassLoader
sum.misc.Launcher$ExtClassLoader

可见,是由WebappClassLoader加载的。

如果,将一个web应用直接放在webapp目录下,那么tomcat就通过standardClassLoader直接加载,而不是通过WebappClassLoader来加载。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档