公司一个项目需要部署2个war包A和B, B工程依赖于A工程,之前是将两个工程打包后直接丢到tomcat中测试,然后等待启动成功,但是由于A工程比较稳定,改动基本都是B工程中,但是tomcat每次启动都要部署一遍A工程,部署A工程的时间大约是2分钟左右,任务多的时候一天测试基本会部署十几次,按照原先的做法一天会浪费很多时间在重复部署A工程上,所以需要将A工程和B工程独立部署。
本机环境使用的是tomcat-8.5.30,只需要将原先的tomcat目录复制一遍重新命名,然后/conf/server.xml中将7004/7005/7006改成自定义端口,只要两个tomcat中不重复即可。
<Server port="7004" shutdown="SHUTDOWN">
<Connector port="7005" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="7006" protocol="AJP/1.3" redirectPort="8443" />
网上有提到说新建CATALINA_HOME_A将catalina.bat和startup.bat中的CATALINE_HOME替换对应的环境变量,根据测试8.5版本如果环境变量没有设置CATALINE_HOME会将当前的目录路径设置为CATALINA_HOME。
如果一个Tomcat想配置多个服务可以在/conf/server.xml中Server节点下新建一个Service节点
<Service name="appframe">
<Connector port="7001" protocol="HTTP/1.1" maxThreads="700" acceptCount="100" connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/>
<Engine name="appframe" defaultHost="localhost">
<Host name="localhost" appBase="appframe"></Host>
</Engine>
</Service>
在配置完后测试发现启动两个tomcat中的服务总是不能一起启动,server.xml中也没有重复的端口,后来折腾半天原来是调试端口重复了,因为之前的tomcat设置了调试端口,另一个tomcat直接复制了原来的目录导致这个端口没注意到重复了。
设置tomcat调试端口:
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6666