How Tomcat Works 8:加载器

一个servlet 容器需要一个定制的容器,而不是简单的使用系统的加载器。

如果像前面章节那样使用系统的加载器来加载servlet 和其他需要的类,这样servlet 就可以进入java 虚拟机classpath 环境下面的任何类和类库,这样会带来安全隐患。

servlet 只允许访问WEB-INF / 目录及其子目录下面的类以及部署在WEB-INF/lib 目录下的类库。

所以servlet 容器需要一个自己的加载器。

在catalina 中,加载器使用org.apache.catalina.Loader 接口表示。

这一章节中比较重要的两个概念是:

库 repository:表示加载器查找的地方

源 resources:表示加载器中的 DirContext 对象,即上下文对象

Tomcat 需要自定义自己的类加载器的原因主要是:

  • 要制定类加载器的某些特定规则
  • 缓存以前加载的类
  • 事先加载类以预备使用

Loader 接口

Reloader 接口

WebAppLoader 接口

在这个Web 应用加载器start 方法调用的时候,会执行:

  • 创建一个类加载器
  • 设置库
  • 设置类路径
  • 设置访问权限
  • 开启一个新的线程用来自动加载

缓存

为了提高性能,当一个类被加载的时候,会被放到缓存中,这样下次需要加载该类的时候,直接从缓存中调用即可。

总结

catalina 的重要组件之一:加载器。Tomcat 使用该内部 类加载器加载应用类。此外,这个加载器也支持缓存以及检测类修改请求的功能。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值