tomcat常用功能

修改端口号

1024-655365 之间取端口号
Tomcat有3个重要端口:
默认访问端口:8080
默认监听关闭tomcat的端口:8005
默认AJP访问端口:8009

vim tomcat/conf/server.xml
···
<Server port="8005" shutdown="SHUTDOWN"> #关闭时服务监听的端口
···<Connector port="8080" protocol="HTTP/1.1"  #客户端访问监听的端口connectionTimeout="20000"redirectPort="8443" />
···<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  #处理AJP协议监听的端口

修改内存

修改tomcat内存有两种方式:

  1. 修改bin目录下的catalina.bat(Windows下)| catalina.sh(Linux下);
  2. 修改bin目录下的startup.bat(Windows下)| catalina.sh(Linux下);
JAVA_OPTS="-server -Xms256m -Xms512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
#将上面的代码添加到catalina.sh的第二行,或设置catalina.sh中第250行左右的JAVA_OPTS后面的参数。#注:server:虚拟机的运行模式,多个CPU的时候更好的发挥性能。默认是client。Xms:堆内存。java heap初始大小,默认为物理内存的64分之1。最大不要超过物理内存的80%。Xmx:java heap的最大值,建议设置为物理内存的一半。MetaspaceSize:初始原空间的大小,默认21M。MaxMetaspaceSize:最大原空间大小,默认无上限
#另jvm默认的最小内存为机器物理内存的1/64,最大内存为机器物理内存的1/4

为什么要修改Tomcat内存?

日常开发中,开发项目比较大的时候依赖的jar包比较多,并且在应用服务器启动的时候,会将项目引用的所有的类依次全部加载到内存当中,java的逻辑内存模式分为堆内存(存储类的实例,数组、引用类型也就是用new生成的对象)、栈内存(存储局部变量比如方法参数)、静态内存区(持久区,该区内存不会被gc回收)

常见内存异常:
OutOfMemoryError:Java head space异常
原因:堆内存满,依赖的jar太多。
OutOfMemoryError : PermGen space异常
原因:静态内存区满,加载的类太多
StackOverflowError异常
原因:栈内存溢出,死循环或无限递归导致

Tomcat的热部署

热部署的三种方式:

1、将web应用文件war包直接放在webapps里,tomcat运行时会自动解压;2、修改sever.xml文件,在Host段内添加Context标签。如下:
<Context debug="0" path="/xxxxdemo" docBase="项目路径" reloadable="true"></Context>#path为访问时端口号后加的路径,项目名。
#debug为项目异常时,输出的日志文件的详细程度,值越大越详细。3、在conf/Catalina/localhost文件夹下新建xml文件,内容同上,这种情况不能设置path属性,tomcat不认,只能用该xml文件的名字作为部署的应用名。如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context  docBase="项目路径" reloadable="true"></Context>

隐藏版本号

  • lib/catalina.jar/org/apache/catalina/util/ServerInfo.properties中server.info=Apache Tomcat/8.5.31改为NO VERSION

AJP协议

若tomcat前面用nginx反向代理则可以忽略ajp连接器(connector),如若使用的是apache httpd服务器则不能关闭ajp连接器,关闭该连接器只需要注释掉server.xml中对应的节点即可。如下:

修改Cookies安全性

在tomcat context.xml配置文件中的context节点设置useHttpOnly=true即可开启cookie加密,提高安全性,使cookie不那么容易被窃取,预防xss攻击

性能优化

tomcat三种运动模式:

  • BIO:效率低下,一个线程只能处理一个请求,请求过多的时候,线程会相应的增加,很浪费资源,tomcat7以下版本是BIO,

  • NIO:基于缓存区、非阻塞的I/O。相对于BIO效率更高(少量线程处理多请求),

  • APR:需要操作系统的支持(tomcat7以及以上版本在操作系统安装了APR时候,tomcat默认是apr模式)

转载于:https://www.cnblogs.com/Smbands/p/11468624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 可以给内联元素设置宽和高吗?为什么?

[html] 可以给内联元素设置宽和高吗&#xff1f;为什么&#xff1f; 1.正常情况下不能设置宽高(可替换内容元素除外例如img)2.元素被浮动&#xff0c;绝对定位&#xff0c;固定定位后&#xff0c;可以设置宽高3.display:block,display:inline-block等后可以设置宽高4.内联元素的…

cve20190708补丁的kb名称_微软KB4495667补丁(CVE 2019-0708补丁)V1.1 官方版

微软KB4495667补丁(CVE 2019-0708补丁)是一款很优秀好用的微软升级补丁工具。这款微软KB4495667补丁是针对2019年新发现的Windows系统漏洞CVE-2019-0708的Windows修补程序。此漏洞很可能被新的勒索软件利用&#xff0c;但您只需下载此修补程序即可安装它。欢迎有需要的朋友来下…

enterFrame是什么意思?

影片剪辑脚本和按钮的脚本类似&#xff0c;它们都使用事件处理函数&#xff0c;与按钮的on关键字不同&#xff0c;影片剪辑使用 onClipEvent关键字。当某种影片剪辑事件发生时&#xff0c;就会触发相应的事件处理函数。影片剪辑最重要的两种事件是load和enterFrame&#xff0c;…

python网站模板下载_Python画图模板大全:从此画图不用愁

1、matplotlib具体参数介绍&#xff1a; 在介绍Python画图模板之前&#xff0c;先买个和大家卖个官司&#xff0c;首先介绍一下Python画图常用库matplotlib的参数&#xff0c;如果只介绍模板&#xff0c;如果你想改一些参数&#xff0c;首先要知道各个参数的含义&#xff0c;那…

tomcat多域名访问

多域名访问 配置虚拟主机&#xff0c;提高资源利用率。 tomcat的server.xml文件也可以配置多个虚拟主机&#xff0c;基于端口可以通过增加service节点实现&#xff0c;基于域名则可以同过增加host节点实现 基于域名的虚拟机 #编辑server.xml文件&#xff0c;在Engine段下添加Ho…

[html] 如何解决input在Firefox和Chrome中高度不一致的问题?

[html] 如何解决input在Firefox和Chrome中高度不一致的问题&#xff1f; 原因是firefox的input的border-width padding 受win10系统的文本大小设置影响设置一样的样式input{box-sizing:border-box;height:20px;}将win10 系统的文本大小设置为100%个人简介 我是歌谣&#xff0c…

工业机器人工具中心点标定的意义_如何理解工业机器人的工具中心点

工业现场的机器人实际上是有多个轴的机械手臂。要想让机器人完成指定的生产任务&#xff0c;通常需要在机器人的末端固定一个工具&#xff0c;比如焊接机器人的焊枪、涂胶机器人的胶枪、搬运机器人的夹具等。由于各工具的大小、形状各不相同&#xff0c;这样就产生一个问题&…

学习:重写hashCode()方法的必要性

当一个类有可能会和其他类发生比较的时候&#xff0c;我们会重写equals方法&#xff0c;但大多数情况下&#xff0c;都忽略了重写hashCode方法。 这里说一下重写hashCode的必要性。 当我们使用HashSet或者HashMap的时候&#xff0c;在比对value|key是否存在时&#xff0c;会调用…

python利用缩进写模块_Python之缩进块

MySQL主从复制、半同步复制和主主复制概述 http://www.cnblogs.com/zping/p/5275531.html 17 任务调度相关类综述——Live555源码阅读&lpar;一&rpar;任务调度相关类 这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本…

二进制安装mysql-5.7.26

一、上传二进制 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz包 #/data 是数据盘 自己根据情况定 [rootVM_0_10_centos data]# pwd/datatar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.26-linux-glibc2.12-x86_64 mysql #做软连接 ln -s /data/mysql /usr/lo…

[html] 块级元素不能包含其他块级元素有那些?

[html] 块级元素不能包含其他块级元素有那些&#xff1f; 嵌套规则&#xff1a;块级元素可以包含内联元素或某些块级元素&#xff0c;但内联元素不能包含块级元素&#xff0c;它只能包含其它内联元素。块级元素不能放在p里面。有几个特殊的块级元素只能包含内联元素&#xff0…

自组网中继台_同频自组网基站

随着社会的发展&#xff0c;应急处置部门对专网无线通讯的需求越来越强烈&#xff0c;优秀的无线通信系统能够帮助应急救援部门快速反应、高效工作。除了在城市等固定地区的无线通信外&#xff0c;应急救援部门在山区、丛林、荒漠、隧道、地下室等场景下的通讯一样非常重要。但…

INF DestinationDirs Section

INF DestinationDirs Section INF DestinationDirs Section格式如下&#xff1a; [DestinationDirs] [DefaultDestDirdirid[,subdir]] [file-list-sectiondirid[,subdir]]... 描述&#xff1a;该域记录了在INF文件的其他域中引用的需要复、删除、重命名的文所在的目录。 Defau…

python给矩阵赋值_解决Python二维数组赋值问题

解决Python二维数组赋值问题 当我们采用s[[0]*3]*2初始化一个数组&#xff0c;然后对s[0][0]进行赋值&#xff0c;改变的是第一列所有的值。因为用s [[0]*3]*2 初始化数组&#xff0c;他表示的是指向这个列表的引用&#xff0c;所以当你修改一个值的时候&#xff0c;整个列表都…

[html] a标签可以再嵌套a标签吗?为什么?如果不行,那又想要嵌套效果怎么解决呢?

[html] a标签可以再嵌套a标签吗&#xff1f;为什么&#xff1f;如果不行&#xff0c;那又想要嵌套效果怎么解决呢&#xff1f; a标签不能嵌套a标签<a href"https://www.baidu.com/" class"parent">点击父级标签<a href"https://www.baidu.c…

mysq5.7 主主同步

db01 172.21.0.10 db02 172.21.0.14 一、安装数据库看上一遍博客 修改配置文件 db01 172.21.0.10 [rootVM_0_10_centos mysql]# cat /etc/my.cnf [mysqld] port3306 character-set-serverutf8 basedir/usr/local/mysql datadir/usr/local/mysql/data #innodb_buffer_pool_…

代码整洁之道 python_Python代码整洁之道:编写优雅的代码

译者序前言致谢关于作者关于技术审校者第1章 关于Python的思考11.1 编写Python代码11.1.1 命名21.1.2 代码中的表达式和语句51.1.3 拥抱Python编写代码的方式81.2 使用文档字符串141.2.1 模块级文档字符串171.2.2 使类文档字符串具有描述性171.2.3 函数文档字符串181.…

python猜数字游戏实例_Python案例:猜数字小游戏,由浅入深!

本案例只适合新手&#xff0c;老司机请绕路。 游戏介绍&#xff1a;程序自己有一个数字&#xff0c;用户输入一个数字&#xff0c;两个数字进行比较。 可以学到的知识点&#xff1a;input函数、字符串、while循环、if条件判断语句、break语句。 一、 简单版 猜数字游戏&#xf…

PLSQL

每个语句可加“&#xff1b;”也可以不加“&#xff1b;”但是连在一起执行必须加“&#xff1b;”delete taccorequest;commit;select * from taccorequest;转载于:https://www.cnblogs.com/JackShao/archive/2012/04/30/2476942.html

基于DispatchProxy打造自定义AOP组件

DispatchProxy是微软爸爸编写的一个代理类&#xff0c;基于这个&#xff0c;我扩展了一个AOP组件 暂时不支持依赖注入构造方法&#xff0c;感觉属性注入略显麻烦&#xff0c;暂时没打算支持 基于特性的注入流程 [AttributeUsage(AttributeTargets.Method)]internal class TestA…