tomcat | 青训营笔记

115 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第29天 1.1、Tomcat概述 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

1.2、Tomcat历史 Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发,名称为“JavaWebServer”。 1999年,在 Davidson 的帮助下,该项目于1999年于apache软件基金会旗下的JServ项目合并,并发布第一个版本(3.x),即是现在的Tomcat,该版本实现了Servlet2.2和JSP 1.1规范 。 2001年,Tomcat 发布了4.0版本, 作为里程碑式的版本,Tomcat 完全重新设计了其架构,并实现了Servlet 2.3和JSP 1.2规范。 目前 Tomcat 已经更新到 10.0.x版本,但是目前企业中的Tomcat服务器,主流版本还是7.x 和 8.x,所以本课程是基于 8.5 版本进行讲解。 1.3、Tomcat官网 点击打开

第二章 Tomcat单实例安装 2.1、环境准备 虚拟机的版本:VMware-workstation-full-15.5.6-16341506.exe 系统镜像版本:CentOS-6.10-x86_64-bin-DVD1.iso,全新安装,桌面版,可上网 系统内存大小:1GB 系统硬盘大小:20GB 连接工具版本:SecureCRTSecureFX_HH_x64_7.0.0.326.zip 2.2、Tomcat下载 [root@caochenlei ~]# wget mirrors.bfsu.edu.cn/apache/tomc… 1 2.3、Tomcat解压 [root@caochenlei ~]# tar -zxvf apache-tomcat-8.5.57.tar.gz 1 2.4、Tomcat安装 [root@caochenlei ~]# mv apache-tomcat-8.5.57 /usr/local/tomcat 1 2.5、Tomcat启动 注意:Tomcat启动需要Java环境,我这里没有安装,使用的是系统自带的,如果你的系统没有Java环境请自行安装,Java环境安装不再本讲之中!

启动Tomcat:

[root@caochenlei ~]# /usr/local/tomcat/bin/startup.sh 1 关闭防火墙:

[root@caochenlei ~]# service iptables stop [root@caochenlei ~]# chkconfig iptables off 1 2 **在浏览器输入:**http://192.168.239.144:8080/

2.6、Tomcat关闭 [root@caochenlei ~]# /usr/local/tomcat/bin/shutdown.sh 1 第三章 Tomcat配置文件详解 3.1、server.xml 详解 server.xml 是tomcat 服务器的核心配置文件,包含了Tomcat的 Servlet 容器(Catalina)的所有配置。

3.1.1、Server Server是server.xml的根元素,用于创建一个Server实例,默认使用的实现类是 org.apache.catalina.core.StandardServer。

... 1 2 3 标签属性和子元素:

port:Tomcat 监听的关闭服务器的端口。 shutdown:关闭服务器的指令字符串。 Server内嵌的子元素为 Listener、GlobalNamingResources、Service。 3.1.2、Listener 默认配置的5个Listener的含义:

<!‐‐ 用于以日志形式输出服务器 、操作系统、JVM的版本信息 ‐‐>

<!‐‐ 用于加载(服务器启动) 和 销毁 (服务器停止) APR。 如果找不到APR库, 则会输出日志, 并不影响Tomcat启动 ‐‐>

<!‐‐ 用于避免JRE内存泄漏问题 ‐‐>

<!‐‐ 用户加载(服务器启动) 和 销毁(服务器停止) 全局命名服务 ‐‐>

<!‐‐ 用于在Context停止时重建Executor 池中的线程, 以避免ThreadLocal 相关的内存泄漏 ‐‐> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3.1.3、GlobalNamingResources GlobalNamingResources中定义了全局命名服务:

1 2 3 4 5 6 7 8 9 3.1.4、Service 该元素用于创建 Service 实例,默认使用 org.apache.catalina.core.StandardService。默认情况下,Tomcat 仅指定了Service 的名称, 值为 “Catalina”。Service 可以内嵌的元素为 : Listener、Executor、Connector、Engine,其中 : Listener 用于为Service添加生命周期监听器, Executor 用于配置Service 共享线程池,Connector 用于配置Service 包含的链接器, Engine 用于配置Service中链接器对应的Servlet 容器引擎。一个Server服务器,可以包含多个Service服务。 ... 1 2 3 3.1.5、Executor 默认情况下,Service 并未添加共享线程池配置。 如果我们想添加一个线程池, 可以在 下添加如下配置:

1 2 3 4 5 6 7 8 9 标签属性和子元素:

name:线程池名称,用于Connector中指定。 namePrefix:所创建的每个线程的名称前缀,一个单独的线程名称为 namePrefix+threadNumber。 maxThreads:池中最大线程数。 minSpareThreads:活跃线程数,也就是核心池线程数,这些线程不会被销毁,会一直存在。 maxIdleTime:线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000(1分钟),单位毫秒。 maxQueueSize:在被执行前最大线程排队数目,默认为Int的最大值,也就是广义的无限。除非特殊情况,这个值不需要更改, 否则会有请求不会被处理的情况发生。 prestartminSpareThreads:启动线程池时是否启动 minSpareThreads部分线程。 默认值为false,即不启动。 threadPriority:线程池中线程优先级,默认值为5,值从1到10。 className:线程池实现类,未指定情况下,默认实现类为 org.apache.catalina.core.StandardThreadExecutor。 如果想使用自定义线程池首先需要实现 org.apache.catalina.Executor接口。