1. Tomcat核心组件
Tomcat的核心组件有两个,一个是Connector,一个是Container。
Connector组件:
- 接收客户端连接;
- 加工处理客户端请求,请求报文的解析,和响应报文的组装;解析的过程生成request对象,响应的过程生成response对象。
Container组件:
- 所有的子容器的父接口;
- 责任链设计模式。
2.常用配置修改
2.1 端口
- 8005:shutdown,负责监听关闭tomcat请求;
- 8080:HTTP请求端口;
- 8009:负责和其他HTTP服务建立连接。
安装时默认启动这三个端口。
2.2 修改内存
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
TOMCAT_HOME/bin/catalina.bat
第二行加入:
JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
- -server:一定要作为第一个参数,在多个CPU时性能佳 ;
- -Xms:java Heap初始大小,也叫堆内存, 默认是物理内存的1/64,最大不超过物理内存的80%;
- -Xmx:java heap最大值,建议设为物理内存的一半,不可超过物理内存;
- -XX:MetaspaceSize : 初始元空间大小,默认是21M;
- -XX:MaxMetaspaceSize:最大的原空间大小,默认无上限。
配置好之后,分别执行两个批处理文件:
如果执行startup后,CMD一闪而过则表示配置出错。
2.3 热部署
热部署就是在不重新启动Tomcat服务器的情况下,将要项目部署到Tomcat服务器中,也就叫做开发解耦。
首先启动Tomcat,保证控制台有日志输出表明启动成功。
其他方法参考:https://www.cnblogs.com/Andy01/p/7440838.html
2.4 数据库连接池与数据源
数据库连接池就是在程序初始化的时候,集中创建多个数据库连接,进行集中管理供程序使用,保证更快地读写数据库,并且安全可靠。
2.5 Tomcat实现web管理
点击Manager App,弹出登陆页面,选择取消:
进行配置:
重新启动Tomcat服务器,再次弹出登陆页面进行登录:
直接选择war包进行发布:
但是如果war包有几十上百兆,就会有问题,这是需要修改限制。
在两个52428800加一个0变成500M。
再重新启动Tomcat。
3.Tomcat配置单点登陆
单点登陆,Single Sign On,简称SSO,是目前比较流行的企业业务整合的解决方案之一。
SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
参考连接:
https://www.imooc.com/video/19214
https://blog.csdn.net/weinichendian/article/details/103845543
https://www.jianshu.com/p/8f51c3c74770?from=timeline
4.Tomcat安全配置
在投入生产环境之前主要的初始化配置和一些安全规范。
- 关闭Tomcat服务器shutdown端口;
- 隐藏版本信息;
- 禁用Tomcat管理页面;
- 自定义错误页面,如404,500;
- AJP端口管理;
- 启用cookie的HttpOnly。
4.1 关闭Tomcat服务器shutdown端口
修改\Tomcat\apache-tomcat-9.0.20\conf\server.xml,或者Demo\conf\server.xml
令:shutdown="QWEASD"
重新启动Tomcat。
4.2 隐藏版本信息
修改保存,重启Tomcat。
4.3 禁用Tomcat管理页面
重新启动Tomcat
4.4 自定义错误等页面
自行准备一个错误页面。
将页面放入ROOT目录下:
配置web.xml:
重启Tomcat
4.5 AJP端口管理
或者Demo目录下的conf
如果设置了Nginx反向代理,才可以注释掉,如果是阿帕奇,就必须用这个HTTP协议:
4.6 启用Cookie的HttpOnly
Cookie是服务器端写入客户端并保存在客户端的纯本文文件。
或者是
如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。
XSS全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。