有多个同名war要部署在同一台服务器上。除了部署多个Tomcat,还可以在同一个Tomcat下设置多个Service。
流程
- 打开Tomcat/conf/server.xml,选中已有的整个
<Service>
标签,复制,然后粘贴到后面。 - 对复制的
<Service>
进行修改:
- 将
<Service>
的name属性更改为Catalina2。 - 将第一个
<Connector>
的port由8080更改为其他未使用的端口。 - 将第二个
<Connector>
的port由8009更改为其他未使用的端口。 - 将
<Engine>
的name属性由Catalina改为Catalina2,与<Service>
的name属性保持一致。 - 将
<Host>
的appBase属性由webapps更改为webapps2。 - 将
<Host>
的<Value>
子标签directory属性由logs更改为logs2。
- 回到Tomcat根目录,复制文件夹:
- 复制Tomcat/conf/Catalina文件夹,命名为Catalina2。
- 复制Tomcat/webapps文件夹,命名为webapps2。
- 复制Tomcat/logs文件夹,命名为logs2。
-
增大Tomcat的JVM内存来支持多个Service的运行。打开Tokmcat/bin/catalina.bat,在第一行*@echo off*下添加:
set JAVA_OPTS=-Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m
其JVM选项详见后文Tomcat JVM设置。
-
删除Tomcat/work文件夹下的内容。
-
重启Tomcat。
Tomcat JVM设置
- -Xmx Java Heap最大值,默认值为物理内存的1/4
- -Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值
- -Xmn Java Heap Young区大小,不熟悉最好保留默认值
- -Xss 每个线程的Stack大小,不熟悉最好保留默认值
- -XX:PermSize:设定内存的永久保存区域
- -XX:MaxPermSize:设定最大内存的永久保存区域
- -XX:PermSize:设定内存的永久保存区域
- -XX:NewSize:设置JVM堆的’新生代’的默认大小
- -XX:MaxNewSize:设置JVM堆的’新生代’的最大大小
注意Perm是JDK8以前使用,JDK8及以后使用Metaspace:
- -XX:MetaspaceSize:class metadata的初始大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整。
- -XX:MaxMetaspaceSize:class metadata的最大值。默认无限制。