Files
Hui-s-notebook/203-Java/tomcat.md
2023-09-10 10:50:53 +08:00

18 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
正统的类加载器架构
一个健全的Web服务器需要解决如下问题
- 部署在同一服务器上的两个Web应用程序所使用的Java类库可以实现相互隔离
- 部署在同一服务器上的两个Web应用程序所使用的Java类库可以互相共享
- 服务器需要尽可能保证自身的安全不受部署的Web应用程序影响
- 支持JSP应用的Web服务器十有八九都要支持HotSwap功能
提供好几个有不同含义的ClassPath路径供用户存放第三方类库
- /common。可被Tomcat和所有的Web程序共同使用
- /server。可被Tomcat使用对所有Web程序不可见
- /shared。可被所有Web程序使用但对Tomcat自己不可见
- /WebApp/WEB-INF。仅仅可被该Web应用程序使用对Tomcat和其他Web程序不可见
Tomcat定义了多个类加载器
![[Pasted image 20230613181834.png]]
Common、CatalinaServer类加载器、Shared、WebApp分别对应四个加载类库
每一个Web应用程序对应一个WebApp类加载器每一个JSP文件对应一个JasperLoader
Catalin类加载器和Shared类加载器加载的类型相互隔离WebApp类加载器可以使用Shared类加载器加载的类但是每个WebApp类加载器实例之间相互隔离JasperLoader加载方位仅仅时JSP文件编译出的那一个Class文件存在的目的就是为了被丢弃当服务器检测到JSP文件修改时会提黄目前的JasperLoader实例并创建一个新的加载器实现HotSwap功能
Tomcat6之后版本简化了结构没有Catalina和Shared类加载器用Common替代相应的文件夹也被合并为/lib目录