文章字数:548,阅读全文大约需要2分钟
目录结构
bin
内部包含.sh
和.bat
分别是linux
和windows
的执行文件lib
依赖的jar
conf
catalina.policy
权限相关配置server.xml
具体配置文件1
2
3Server节点
- Executor 线程池
- Connector 连接器,管理对外的连接配置端口之类的。如果使用了线程池,这里的最大线程无效web.xml
1 | Servlet |
logs
日志
catalina.x.log
启动日志localhost_access_log
接收到的请求日志
部署
- 隐式部署, war包放到webapps里(一般不推荐,程序和部署工具应该隔离)
server.xml
配置Host
1 | <Host name="localhost" appBean="webapps" unpackWARs="true" auto Deploy="true"> |
- 创建
xml
conf/Catalina/localhost/my.xml
my.xml
1 | <?xml version="1.0" encoding="UTF-8"> |
然后就可以直接访问/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参数
1 | # 设置环境变量 |