目录结构
-
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>
...
- 创建
xml
conf/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
与客户端通讯 (多个) -
Container
Service 的核心组件,按照层级有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"