clear old record

This commit is contained in:
Lostecho
2023-09-10 10:50:53 +08:00
commit 1cd5bb460f
283 changed files with 68653 additions and 0 deletions

17
203-Java/tomcat.md Normal file
View File

@@ -0,0 +1,17 @@
正统的类加载器架构
一个健全的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目录