tomcat
什么是tomcat
是apache的一款开源软件,实现了servlet、webSocket等规范的一个web服务器(tomcat容器)
tomcat的目录结构
- bin 存放bat和sh脚本信息。
- conf :存放配置文件信息
- lib: 存放jar包信息
- logs:存放日志信息
- temp:存放jvm运行的时候产生的临时文件
- webapps:存放web项目
- work:存放jsp编译生成servlet文件
catalina.home和catalina.base
想运行多个实例但是只想解压一个tomcat.
catalina.home指向公用信息的位置,就是bin和lib的父目录。
catalina.base指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
tomcat的server.xml的基本结构
- server:控制整个tomcat的关闭和启动
- services:服务是一个或者多个连接器的组成
- connector:使用javaNio来处理连接的连接器
- engine:引擎管理多个host
- host:主机管理多个context或者说项目,
- context:多项目下的多个servlet进行管理
- host:主机管理多个context或者说项目,
tomcat 下的web.xml
所有的web应用的默认值都取决于conf/web.xml,自己配置的web-inf下的web.xml相当于子类,可以重写。
tomcat 下的context.xml
这个文件下的内容将会被每一个应用共享。
监听资源,监听了这两个web.xml,改动了之后立马重新加载应用
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
tomcat的架构
- 浏览器访问负载均衡服务器(http/https)
- 负载均衡服务器访问tomcat服务器(http/https/AJP)
- tomcat容器
- server组件,服务器,里面有listener,可以JNDI(Java Naming and Directory Interface)接口访问共享resource
- services组件,服务,里面存在connector连接器,
- connector连接器组件。使用javaNio和线程池获取连接。
- engine 引擎,包含主机组件
- host
- context 一个context可以配置一个应用,有独立的loader,以及session管理其manager
- 到这里就是我们最熟悉的应用了,里面有常用的filter和servlet等组件。可以拦截请求处理请求等。
- context 一个context可以配置一个应用,有独立的loader,以及session管理其manager
- host
- services组件,服务,里面存在connector连接器,
- server组件,服务器,里面有listener,可以JNDI(Java Naming and Directory Interface)接口访问共享resource
需要学习的组件总结如下
- server
- services
- connector
- engine
- host
- context
- manager
- listener
- pipoline
- valve
- filter
- servlet
tomcat的层级结构概述
树形结构,结构中的父节点管理子节点的生命周期
tomcat的生命周期管理
方法:init、start、stop、destory四个生命周期方法,和下面12种状态。
//新建
NEW(false, null),
//初始化中后
INITIALIZING(false, Lifecycle.BEFORE_INIT_EVENT),
INITIALIZED(false, Lifecycle.AFTER_INIT_EVENT),
//启动前中后
STARTING_PREP(false, Lifecycle.BEFORE_START_EVENT),
STARTING(true, Lifecycle.START_EVENT),
STARTED(true, Lifecycle.AFTER_START_EVENT),
//结束前中后
STOPPING_PREP(true, Lifecycle.BEFORE_STOP_EVENT),
STOPPING(false, Lifecycle.STOP_EVENT),
STOPPED(false, Lifecycle.AFTER_STOP_EVENT),
//销毁前中后
DESTROYING(false, Lifecycle.BEFORE_DESTROY_EVENT),
DESTROYED(false, Lifecycle.AFTER_DESTROY_EVENT),
//失败状态
FAILED(false, null);
tomcat容器的生命周期管理
容器也是一个组件,container继承自lifecycle接口,有拥有自己的生命周期和监听器。
容器之间存在父子关系,容器执行后台的周期性的方法,定义的周期执行的时间。