Tomcat5启动流程与配置详解(1)

1 Tomcat5.0目录结构

   Tomcat下有9个目录,分别是bin,common,conf,logs,server,shared,temp,webapps,work 目录,现在对每一目录做介绍。Tomcat根目录在tomcat中叫<CATALINA_HOME>。

  -<CATALINA_HOME>/common-
    在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。 -<CATALINA_HOME>/shared-
    在shared目录下的lib目录,存放所有web应用能访问的,但Tomcat不能访问的JAR。 -<CATALINA_HOME>/server-
    在server/webapps目录中,存放Tomcat自带的两个APP-admin和manager应用,使用来管理Tomcat-web服务用的。在server/lib目录中,存放tomcat服务器所需要的各web应用不能访问种jar。 -<CATALINA_HOME>/work –
    Tomcat把各种由jsp生成的servlet文件放在这个目录下。 -<CATALINA_HOME>/temp –
    临时活页夹,Tomcat运行时候存放临时文件用的。 -<CATALINA_HOME>/logs –
    存放Tomcat的日志文件。 -<CATALINA_HOME>/conf –
    Tomcat的各种配置文件,最重要的是 server.xml。(下文将详细介绍此文件) -<CATALINA_HOME>/webapps-
    web应用的发布目录,把 java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了。2.Tomcat的启动  Tomcat的启动是从解析bat文件开始,bat文件最终调用org.apache.catalina.startup.Bootstrap开始类的加载。  2.1 TOMCAT自己的类载入器(ClassLoader)加载流程如下:
       +---------------------------+
       |         Bootstrap         |
       |             |             |
       |          System           |
       |             |             |
       |          Common           |
       |         /      \          |
       |     Catalina  Shared      |
       +---------------------------+
其中:
-Bootstrap –
    载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*.jar。 - System -
①载入$CATALINA_HOME/bin/bootstrap.jar  初始化Tomcat,执行Main方法。
②$JAVA_HOME/lib/tools.jar  Sun的工具类,包括编译Jsp为Servlet的工具类。 - Common -
    这个目录下的类虽然对TOMCAT和所有的WEB APP都可见。但是Web App的类不应该放在这个目录下,所有未打包的Class都在$CATALINA_HOME/common/classes下,所有打包的jar都在$CATALINA_HOME/commons/endorsed和$CATALINA_HOME/common/lib下,默认情况会包含以下几个包:
①jndi.jar JNDI API接口,这个包仅在Java1.2时候装入,1.3以后的版本JDK已自动装入。
②naming-common.jar JNDI接口实现类,Tomcat用这些类在内存中使用Context。
③naming-resources.jar JNDI实现,Tomcat用它们定位Web App的静态资源。
④servlet.jar Servlet,Jsp API。
⑤xerces.jar XML解析器,特定的Web App可以在自己的/WEB-INF/lib 中覆盖。 - Catalina -
    装入Tomcat实现所有接口的类,这些类对Web App是完全不可见的,所有未打包的类在$CATALINA_HOME/server/classes,所有jar包在$CATALINA_HOME/server/lib下。一般情况该ClassLoader将Load下面几个包:
①catalina.jar Servlet容器的Tomcat实现包。
②jakarta-regexp-X.Y.jar 正则表达式,请求过滤时使用。
③servlets-xxxxx.jar Servlet支持包。
④tomcat-coyote.jar Tomcat的Coyote连接实现包。
⑤tomcat-jk.jar Web Server绑定包,允许Tomcat绑定Apache等作为Web Server。
⑥tomcat-jk2.jar 功能同上。
⑦tomcat-util.jar Tomcat工具类,可能被一些Connector用到。
⑧tomcat-warp.jar 用于Apache Server包。 - Shared -
    载入所有WEB APP都可见的类,对TOMCAT不可见。 所有未打包的类在$CATALINA_HOME/shared/classes,所有jar包在$CATALINA_HOME /lib下。默认情况包含下面几个包:
①jasper-compiler.jar Jsp编译器,编译Jsp为Servlet。
②jasper-runtime.jar Jsp(已编译成Servlet)运行支持包。
③naming-factory.jar 支持Web App使用JNDI的封装包。 -WebAppX -
    Web App ClassLoader,Web App被部署是在该ClassLoader被创建的时候。所有class都在WEB-INF/classes下,所有jar在WEB-INF/lib下。特别注意WEB APP自己的ClassLoader的实现与众不同:
    它先试图从WEB APP自己的目录里载入,如果失败则请求父ClassLoader的代理。这样可以让不同的WEB APP之间的类载入互不干扰.另,Tomcat Server使用的是Catalina   ClassLoader,一般的Web App使用的是WebApp ClassLoader。 2.2 下面总结Tomcat类加载过程
Bootstrap($JAVA_HOME/jre/lib/ext/*.jar)
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)
    仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.class lib/*.jar) 2.3加载类和资源的顺序为:
1、/Web-INF/classes
2、/Web-INF/lib/*.jar
3、Bootstrap
4、System
5、$CATALINA_HOME/common/classes
6、$CATALINA_HOME/common/endores/*.jar
7、$CATALINA_HOME/common/lib/*.jar
8、$CATALINA_HOME/shared/classes
9、$CATALINA_HOME/shared/lib/*.jar3.server.xml
3.1配置tomcat组件的XML文件server.xml:
①顶层类元素[Top Level Elements]: 位于整个配置文件的顶层, 包括<Server>和<Service>。
②连接器类元素[Connectors ]: 客户和服务(容器类元素)间的通讯接口。接受客户请求,返回响应结果<Connector>。
③容器类元素[Containers]: 处理客户请求并且生成响应结果,包含3个:<Engine> <Host> <Context>。
④嵌套类元素[Nested Components]: 可以加入到容器中的元素,包括:<logger> <Valve><Realm>等。

你可能感兴趣的:(tomcat,应用服务器,Web,servlet,配置管理)