Tomcat 学习笔记

概述

Tomcat 是一开源的 Java Web 服务器,是当今最流行的基于 Java 的 Web 应用服务器。Tomcat 具有以下特点:

  • Apache软件基金会出口
  • 开源软件
  • 源代码是 Java 写的

由于Tomcat 是使用Java语言实现的,因此 Tomcat 的运行依赖于 Java 运行环境,故运行 Tomcat 前需要正确安装 JRE(Java Runtime Environment)。

安装

可以在 Tomcat 官方网站进行 Tomcat 的下载,目前 Tomcat 的最新开发版本是9.0.x,最新稳定版本8.0.x。在生产环境部署 Tomcat 的话,我们一般使用7.0.x版本。
Tomcat 官方网站:http://tomcat.apache.org/index.html。下载所需的 Tomcat 版本后,对下载文件进行解压,即完成 Tomcat 的安装。

目录结构

Tomat 解压后的目录结构如下:
这里写图片描述
图1:Tomcat 的目录结构

  • bin:可执行文件目录
  • conf:配置文件目录
  • lib:Tomcat的依赖库目录
  • logs:日志目录
  • temp:临时文件夹
  • webapps:默认的应用部署目录
  • work:供web应用使用

启动

为了启动 Tomcat,可以先设置 CATALINA_HOME 环境变量。CATALINA_HOME 变量用于指定 Tomcat 目录位置,通过以下方式可以设置这个变量:

$ export CATALINA_HOME="/Users/lihao/Soft/tomcat9"
$ echo $CATALINA_HOME 
/Users/lihao/Soft/tomcat9

正如上面所述,bin 目录包含了启动脚本,其中包括 startup.sh,可以通过执行该脚本来启动 Tomcat。

$ ./bin/startup.sh 
Using CATALINA_BASE:   /Users/lihao/Soft/tomcat9
Using CATALINA_HOME:   /Users/lihao/Soft/tomcat9
Using CATALINA_TMPDIR: /Users/lihao/Soft/tomcat9/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
Using CLASSPATH:       /Users/lihao/Soft/tomcat9/bin/bootstrap.jar:/Users/lihao/Soft/tomcat9/bin/tomcat-juli.jar
Tomcat started.

为了验证启动是否成功,打开浏览器,输入http://127.0.0.1:8080,可以看到浏览器输出,这说明Tomcat 已成功启动 。

这里写图片描述
图2:Tomcat 浏览器展示

如果需要设置 Tomcat 运行参数,可以通过设置 JAVA_OPTS 参数来实现。例如,

$ export JAVA_OPTS="-server -Xms1024m -Xmx1024m"
$ echo $JAVA_OPTS 
-server -Xms1024m -Xmx1024m
$ ./bin/startup.sh 
……
Tomcat started.

-Xms 表示 Java 初始化堆的大小,-Xms-Xmx 设成一样的值,避免 JVM 反复重新申请内存,导致性能大起大落。-Xmx 表示最大 Java 堆的大小,当应用程序需要的内存超出堆的最大值时 JVM 就会提示内存溢出,并导致应用服务崩溃。上面命令设置 初始化堆为1024M,最大堆为1024M。

server.xml

server.xml 文件是 Tomcat 最重要的服务器配置文件,其文件的结构如下:

这里写图片描述
图3:server.xml的文件结构

通过 server.xml 文件的结构,可以一窥 Tomcat 总体设计的架构。

请求处理流程

Tomcat 处理用户请求的流程图如下:

这里写图片描述
图4:Tomcat 处理用户请求流程

用户发出请求后,Tomcat 的 Connector 负责接收请求,然后将请求交由 Container 处理,Container 处理请求后,最后由 Connector 返回响应结果给用户。

Connector

Connector是 Tomcat 的连接器,Connector的作用是接收用户的网络请求,然后将请求封装给 Container 处理。Tomcat 中默认的连接器是 Coyote。
Connector 默认以 BIO(blocking IO,阻塞式IO)运行。可以通过修改设置 Connector 以其他模式运行。

Connector 包括以下几个常用的参数配置:

  • port:监听的端口号
  • address:监听的IP地址,对于拥有多个IP地址的服务器,可以通过此配置设定监听的IP地址
  • protocol:使用的协议。默认值是HTTP/1.1
  • connectionTimeout:客户请求连接的超时时间
  • acceptCount:接受的最大请求数,当排队中的请求数量超出此值时,将会拒绝后面的请求
  • maxConnections:最大连接数
  • minSpareThreads:最小空闲线程数
  • maxThreads:最大线程数

Container

Container 的作用是负责处理用户的请求,并把响应结果返回给客户端。

Tomcat 日志

Tomcat 的日志主要包括以下几类:

  • 系统运行日志
  • 访问日志
  • 应用日志

访问日志

可以在server.xml里面对访问日志进行配置:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

访问日志的配置包括,日志文件名和前缀和后缀名称,日志的输出格式,日志的输出目录,等等。

Tomcat 部署

完成 Web 应用的开发后,可以通过将应用文件夹打成 war 包,并将这个 war 包放到 Tomcat 的 webapps 目录的方式,进行 Web 应用的部署。
打 war 包的命令如下:

cd 【应用文件夹名称】
jar cvf【应用文件夹名称】 .

将会生成一个 war 包。将这个 war 放到 webapps 目录,便可以访问这个 Web 应用。

参考资料

  1. Java Web开发入门,网易云课堂
  2. http://tomcat.apache.org/index.html
  3. http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
  4. http://jingyan.baidu.com/article/359911f551ef7457fe03061b.html
  5. http://blog.csdn.net/ldx891113/article/details/51735171
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值