Tomcat

Tomcat

连接器(Connector)

容器(Container)

tomcat类加载

image-20241110221436824

类加载目录

  • 放置在/common目录中。 类库可被Tomcat和所有的Web应用程序共同使用。
  • 放置在/server目录中。 类库可被Tomcat使用, 对所有的Web应用程序都不可见。
  • 放置在/shared目录中。 类库可被所有的Web应用程序共同使用, 但对Tomcat自己不可见。
  • 放置在/WebApp/WEB-INF目录中。 类库仅仅可以被该Web应用程序使用, 对Tomcat和其他Web应

Tomcat为什么要自己实现classload

  • 对于各个webapp中的class和lib,需要相互隔离,不能出现一个应用中加载的类库会影响另一个应用的情况;而对于许多应用,需要有共享的lib以便不浪费资源,举个例子,如果webapp1和webapp2都用到了log4j,可以将log4j提到tomcat/lib中,表示所有应用共享此类库,试想如果log4j很大,并且20个应用都分别加载,那实在是没有必要的。
    1. 第二个原因则是与jvm一样的安全性问题。使用单独的classloader去装载tomcat自身的类库,以免其他恶意或无意的破坏;
    • 第三个原因是热部署的问题。相信大家一定为tomcat修改文件不用重启就自动重新装载类库而惊叹吧。

Tomcat
https://x-leonidas.github.io/2022/02/01/11技术栈/Tomcat/
作者
听风
发布于
2022年2月1日
更新于
2024年11月10日
许可协议