目录结构
-
bin内部包含.sh和.bat分别是linux和windows的执行文件 -
lib依赖的jar conf
-
catalina.policy权限相关配置 -
server.xml具体配置文件
Server节点
- Executor 线程池
- Connector 连接器,管理对外的连接配置端口之类的。如果使用了线程池,这里的最大线程无效
web.xml
Servlet
- DefaultServlet 默认的,加载静态文件,图片,html,js等
- JspServlet 处理jsp的
mime-mapping Tomcat处理的文件类型
welcome-file-list 首页
-
logs日志
-
catalina.x.log启动日志 -
localhost_access_log接收到的请求日志
部署
- 隐式部署, war包放到webapps里(一般不推荐,程序和部署工具应该隔离)
-
server.xml配置Host
<Host name="localhost" appBean="webapps" unpackWARs="true" auto Deploy="true">
<!-- reloadable热加载 -->
<Context path="/myUrl" docBase="d:/Demo" reloadable="true"> </Context>
...
- 创建
xmlconf/Catalina/localhost/my.xml
my.xml
<?xml version="1.0" encoding="UTF-8">
<Context path="/myUrl" docBase="d:/Demo" reloadable="true"> </Context>
然后就可以直接访问/my路径进入程序
结构

结构
Service(通过配置多个service和connector可以监听多个端口) -> engine(引擎) --> Host(虚拟主机,域名)--> Context(应用)-->wrapper(servlet)
- Bootstarp 入口类
- Catalina 启动类
- server 服务器,代表整个tomcat(StandardServer是标准实现 )
- Service 逻辑功能层,可以有多个
-
Connector连接器,负责Tomcat与客户端通讯 (多个) -
ContainerService 的核心组件,按照层级有Engine,Host,Context,Wrapper四种,一个service只有一个Engine
-
Connector发送Request给Container -
Container返回Reponse
- Jasper jsp引擎
连接器
-
NIO模式,
-
Channel向Selector注册连接,读写IO事件 -
Selector轮询selectKey集合 - 通过key找到对应的
channel通过绑定的buffer进行读写
- 流程解析
- ProtocolHandler 协议解析
- Endpoint Socker网络连接处理
- Processor 处理Socker封装成Request
- Adapter适配器将Request包装成ServletRequest
容器,责任链
Engine => Host => Context => Wrapper
Catalina.start()启动tomcat start
启动
增加VM参数
# 设置环境变量
-Dcatalina.home="D:\tomcat\build"