一、tomcat总体介绍:
- 免费开放源代码的web应用服务器;
- 单独的web服务器使用,也可以和其它的web服务器配合使用,58:nginx+tomcat(nginx处理静态资源,效率较高,可以处理几万到十万的并发,tomcat是java web 容器,处理java资源,nginx与tomcat通过反向代理进行数据的流转);
- tomcat实现了jsp与JNDI的api的实现,不包括其余所有java EE api(java mail,JMS,JTA),tomcat不是一个完整的java EE服务器(折中方案,首先设计以简单出发,其次Java EE 其它标准,都有专门的组件负责);
- tomcat由java编写,所以有跨平台性;
- tomcat运行需要JRE支持(Java编写,所以运行必须需要JRE环境)。
二、业界地位:
- 市场占有率高(58中:线上环境服务器使用tomcat,测试环境使用jetty,其与开发体系结合性较高);
- 轻量,启动速度系统运行稳定;
- 代码开源,可以定制化开发;
- 安装配置简单。
三、目录结构
- /bin:可运行的二进制文件,脚本文件运行命令,tomcat环境变量的配置,启动,停止,常用脚本等,其中有一个特殊的文件.jar文件,为tomcat本身使用的文件,核心文件,放在此目录下防止别人随意引用更改;
- /conf:tomcat的配置文件;
- /lib:由于java开发,所以会引用第三方jar包,存放此目录x;
- /logs:日志文件,tomcat本身产生的日志与web应用产生的日志文件,一般出现问题应该首先查看xxxx.out日志文件;
- /temp:运行时产生临时文件的目录,如上传一个文件时,以流形式传输,上传完成之前会生成一些临时文件,失败查看是否还有空间或读写权限;
- /webapps:存放java应用的目录,默认存放在此目录下
- /work:工作进行中,一些文件编译成java文件,临时放在此目录下,如jsp开发,会先将一些jsp文件放在此目录下。
四、tomcat整体架构
以上为tomcat核心,也可以说为tomcat的整体架构图:
- server:代表为一个应用服务器,为tomcat;
- service:代表为一个服务,一个server下可以有多个service组件,实际运用很少配置多个service组件,一个service组件下有且只能有一个Engin组件,可以有多个connector组件,可以有多个host组件,host组件下可以有多个context组件;
- Engine:处理引擎组件,一个service下所有的请求都会通过Engine引擎;
- host:虚拟主机,web应用中的域名;
- Connector:连接器,tomcat此web应用服务器依靠connector与外界建立联系,其中有端口,对端口进行监听,当收到一个tcp请求,经过connector包装成request;
- context:真正的web应用,每次写一个web应用,到tomcat中即为context;
- pipeline:设计优美的地方,上行流与下行流通用的管道,管道可定制化,管道任意位置加上filter组件(程序员可以自己加的组件),每一层都可以加上程序员自己定义的filter组件,各个阶段完全暴露给使用者,使用者可以在任何阶段加上自己的filter组件,进行拦截或修改属性等。
五、请求处理
红色标记相当于一次请求的处理过程,当服务器将请求处理完成,原路返回响应。都通过管道流转。以上设计为典型的设计模式:责任链的设计模式。
六、tomcat安装配置
配置文件:Server.xml,XML做配置,自描述语言,比较清楚,/conf目录下