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

1.6 KiB
Raw Blame History

正统的类加载器架构 一个健全的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目录