tomcat

一. 简介

  Apache的一个子项目,是一款Servlet/JSP容器。
  Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求与服务器响应的中间层。Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

二.Servlet容器调用Servlet处理请求/响应过程

  1. 当客户请求访问某个Servlet时,Servlet容器将创建一个ServletRequest对象和ServletResponse对象;
  2. 在ServletRequest对象中封装了客户请求信息,然后Servlet容器把ServletRequest对象传给客户所请求的Servlet;
  3. Servlet把响应结果写在ServletResponse中,由Servlet容器把响应结果传给客户。

images48-1.png

三. tomcat结构

  tomcat服务器是由一系列可配置的组件构成,其中核心组件是Servlet容器,它是所有其他Tomcat组件的顶层容器。可以在server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。

<Server>  //Servlet容器
    <Service>
        <Connector/>  //连接器。和客户实际交互的组件,它负责接受客户的请求,以及想客户返回响应结果。
 
        ......
        <Connector/>
        <Engine>
            <Host>  //虚拟主机
                <Context></Context>  //运行在虚拟主机上的单个web应用。
                ......
                <Context></Context>
            </Host>
            ......
            <Host>
                ......
            </Host>
        </Engine>
    </Service>
    ......
    <Service>
        ......
    </Service>
</Server>

顶层配置元素        <Server> 和<Service>;
连接器类元素       <Connector>  介于客户服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户;
容器类元素          <Engine>,<Host>,<Context>处理客户请求并生成响应结果的组件
嵌套类元素          <Loger>,<Value>,<Realm> 可以加入到容器中的组件

<Server>   元素代表整个Servlet容器,它是Tomcat实例的顶层元素。<Server>元素中可以包含一个或多个<Service>元素。
<Service>   包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素
<Connector>代表和客户实际交互的组件,它负责接受客户的请求,以及想客户返回响应结果。
<Engine>    每个<Service>元素只能包含一个<Engine>元素。<Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。
<Host>     一个<Engine>可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用。每个Web应用必须有唯一的URL路径,这个URL路径在<Context>元素的path属性中设定。如:<Context   path=“/child” docBase=“web-test”   debug=“0” Reloadable=“true”>。reloadable为true,则tomcat运行中会动态监视class等文件的改动,如果监视到有class文件被更新,tomcat会自动重新加载Web应用。开发阶段设为true,发布阶段设为false.访问时:www.xxx.com/child-->webapps/test.
如:
<Host name="localhost" appBase="/opt/webapps" unpackWARs="true" autoDeploy="true">
<Context path="/adu" docBase="adu-web" debug="0" reloadable="false"></Context>
</Host>
则:www.xxx.com/adu-->/opt/webapps/adu-web

四. JAVA web应用

Java Web应用由一组静态HTML页面,Servlet,JSP和其他的class组成。每种组件在Web应用中都有固定的存放目录。
Java Web应用通过一个基于XML的发布描述符文件来配置其发布信息,这个文件名为web.xml。

五. 部署

部署一个新的tomcat需要修改的地方:
1)bin/catalina.sh(调试设置)

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -DDEBUG_ENV -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=35577"
# OS specific support........

2)conf/server.xml

<Server port="45742" shutdown="SHUTDOWN">
 ...... 
<Connector port="45741" protocol="HTTP/1.1" maxThreads="2000" acceptCount="2000" connectionTimeout="20000" redirectPort="45743" />
 ......
<Connector port="45744" protocol="AJP/1.3" redirectPort="45743" />
.....
<Host name="localhost" appBase="/opt/webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="adu-web" debug="0" reloadable="false"></Context>
</Host>
......

  

  

原文地址:https://www.cnblogs.com/waterystone/p/5085156.html