0%

tomcat基础内容

文章字数:548,阅读全文大约需要2分钟

目录结构

  • bin内部包含.sh.bat分别是linuxwindows的执行文件
  • lib依赖的jar
  • conf
  1. catalina.policy 权限相关配置
  2. server.xml 具体配置文件
    1
    2
    3
    Server节点
    - Executor 线程池
    - Connector 连接器,管理对外的连接配置端口之类的。如果使用了线程池,这里的最大线程无效
  3. web.xml
1
2
3
4
5
Servlet
- DefaultServlet 默认的,加载静态文件,图片,html,js等
- JspServlet 处理jsp的
mime-mapping Tomcat处理的文件类型
welcome-file-list 首页
  • logs 日志
  1. catalina.x.log 启动日志
  2. localhost_access_log 接收到的请求日志

部署

  • 隐式部署, war包放到webapps里(一般不推荐,程序和部署工具应该隔离)
  • server.xml配置 Host
1
2
3
4
<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

1
2
<?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
  1. Connector发送RequestContainer
  2. Container返回Reponse
  • Jasper jsp引擎

连接器

  • NIO模式,
  1. ChannelSelector注册连接,读写IO事件
  2. Selector轮询selectKey集合
  3. 通过key找到对应的channel通过绑定的buffer进行读写
  • 流程解析
  1. ProtocolHandler 协议解析
  2. Endpoint Socker网络连接处理
  3. Processor 处理Socker封装成Request
  4. Adapter适配器将Request包装成ServletRequest

容器,责任链

Engine => Host => Context => Wrapper
Catalina.start()启动tomcat start

启动

增加VM参数

1
2
# 设置环境变量
-Dcatalina.home="D:\tomcat\build"