• how tomcat works(第八章)


    在前面的章节中已经介绍了一个简单的加载器,用它来加载servlet类。这一章会介绍标准网络应用加载器(standard web application loader),简单的说就是加载器。一个servlet容器需要一个定制的容器,而不是简单的使用系统的加载器。如果像前面章节中那样使用系统的加载器来加载servlet和其他需要的类,这样servlet就可以进入Java虚拟机CLASSPATH环境下面的任何类和类库,这会带来安全隐患。Servlet只允许访问WEB-INF/目录及其子目录下面的类以及部署在WEB-INF/lib目录下的类库。所以一个servlet容器需要一个自己的加载器,该加载器遵守一些特定的规则来加载类。在Catalina中,加载器使用org.apache.catalina.Loader接口表示。

    Tomcat需要一个自己的加载器的另一个原因是它需要支持在WEB-INF/classes或者是WEB-INF/lib目录被改变的时候会重新加载。Tomcat的加载器实现中使用一个单独的线程来检查servlet和支持类文件的时间戳。要支持类的自动加载功能,一个加载器类必须实现org.apache.catalina.loader.Reloader接口。

    本章的第一节先简要的回顾下Java的类加载机制。接下来介绍了加载器必须实现的Loader接口,然后是Reloader接口。接下来看到的是加载器的实现,最后本章使用一个程序说明了怎么使用Tomcat类的加载器。

    本章广泛使用的是两个词:库(repository)和源(resources)。库表示加载器查找的地方,源表示加载器中的DirContext对象,它的文档基(document base)指向了上下文的文档基

    http://docs.google.com/View?id=ddxgftrb_9g3w42fch

  • 相关阅读:
    指针和引用的区别
    c++空指针 和 野指针
    strcpy源码实现方式
    函数的分文件编写
    哈夫曼编码实现
    错误:The selected wizard could not be started Plug-in com.genuitec.eclipse.j2ee.ui was unable to load class com.genuitec.eclipse.j2ee.ui.wizard.WebProjectWizard
    sql server,mysql 和navicat for mysql的区别
    MySQL 5.7
    sql server 2017
    Download
  • 原文地址:https://www.cnblogs.com/macula7/p/1960721.html
Copyright © 2020-2023  润新知