【译】Tomcat如何工作<第8章:加载程序>

在前面的章节中,你已经看到了一个简单的加载器实现,该实现用于加载servlet类。本章介绍了Catalina中的标准Web应用程序加载程序,或简称为loader。Servlet容器需要自定义的加载器,不能简单地使用系统的类加载器,因为它不应该信任正在运行的Servlet。如果像我们在前面几章中所做的那样,使用系统的类加载器加载所有的servlet和servlet所需要的其他类,那么一个servlet将能够访问运行中的Java虚拟机(JVM)的CLASSPATH环境变量中所包含的任何类和库,这将是一种安全漏洞。仅允许Servlet从 WEB-INF/classes
目录及其子目录中以及从部署WEB-INF/lib
目录中的库中加载类。这就是为什么servlet容器需要自己的加载器。Servlet容器中的每个Web应用程序(上下文)都有其自己的加载器。加载程序使用类加载程序,该类加载程序将某些规则应用于加载类。在Catalina中,加载器由 org.apache.catalina.Loader
接口表示。

Tomcat需要其自己的加载器的另一个原因是,只要修改了 WEB-INF/classes
WEB-INF/lib
目录中的类,就支持自动重新加载。Tomcat加载器实现中的类加载器使用一个单独的线程,该线程不断检查Servlet和支持类文件的时间戳。为了支持自动重新加载,类加载器必须实现 org.apache.catalina.loader.Reloader
接口。

本章的第一部分简要回顾了Java中的类加载机制。接下来,它介绍了所有加载程序都必须实现的Loader接口,然后是Reloader接口。在查看了加载器和类加载器的实现之后,本章介绍了一个应用程序,该应用程序演示了如何使用Tomcat的加载器。

本章广泛使用两个术语:存储库(repository)和资源(resources)。存储库是一个由类加载器搜索的地方。术语资源是指类加载器中的DirContext对象,该对象的文档库指向上下文的文档库。

原文 

https://juejin.im/post/5eef63aff265da02d13c6a99

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 【译】Tomcat如何工作<第8章:加载程序>

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址