tomcat類加載

JVM類加載器

  • 父類委託機制

父類委託機制

  • 加載器層級關係: CustomClassLoader -> AppClassLoader(應用類) -> ExtClassloader(jdk/jre/lib/ext) -> BootstrapClassLoader(JVM需要的類)
  • 加載器需要加載classA時,先委託父類加載classA
  • 每個類的加載過程都是自頂向下加載

注意點

  • 如果應用類與系統類同名,只會加載系統類
  • 這樣做的原因是,防止用戶自定義了Object應用類,JVM誤加載了用戶自定義的Object類,導致所有系統Object類的派生類使用異常

Tomcat類加載器

  • 加載器層級關係:
    1. Bootstrap:JVM類及$JAVA_HOME/jre/lib/ext)
    2. System(catalina.bat/catalina.sh中指定位置的類
      • $CATALINA_HOME/bin/bootstrap.jar
      • CATALINABASE/bin/tomcatjuli.jar CATALINA_HOME/bin/tomcat-juli.jar(日誌功能輔助類)
      • $CATALINA_HOME/bin/commons-daemon.jar
    3. Common
      • $CATALINA_BASE/lib下已解壓的類和資源
      • $CATALINA_BASE/lib下jar包
      • $CATALINA_HOME/lib下已解壓的類和資源
      • $CATALINA_HOME/lib下jar包
    4. WebappX
      • /WEB-INF/classes
      • /WEB-INF/lib
  • 加載順序:
    1. Bootstrap
    2. WebappX
    3. System
    4. Common
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章