要运行tomcat,必须要先配置java中的jdk变量。现实生活中,因为服务器有限,难免会遇到两个tomcat部署在同一台服务器的情况,甚至还要配置不同的jdk。
已经不是第一次遇到这个问题了,上一次是小伙伴要去新疆出差,临时让我帮忙在出差笔记本上搭建测试环境,因为笔记本很多同事使用过,安装了不同版本的tomcat和jdk,我配置的环境变量与别人已经配过的混淆了,折腾了很久,注册服务不成功。后来干脆把别的环境都清掉了,这才将系统部署起来。
这一次因为测试环境需要tomcat6和jdk1.7,服务器本身已存在的tomcat6以及对应的jdk1.6仍然在使用,我不能简单粗暴的清掉,所以百度了一些方法,整理如下。
注:先说明一下jdk如何配置
直接运行jdk.exe程序,将安装路径保存;然后右击计算机--》属性--》高级系统设置--》环境变量;新增或者修改三处环境变量
JAVA_HOME:jdk的安装路径;
CLASSPATH:./%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
PATH:;%JAVA_HOME%\BIN;%JAVA_HOME%\jre\bin
检验jdk可安装成功:在命令行输入java -version,如果能显示正确的版本号,则说明jdk配置成功。
情况一:多个tomcat对应一个jdk
网友说jdk版本向上兼容,也就是说依赖版本较高的那一版jdk即可。
第一个tomcat
直接添加环境变量:CATALINA_HOME,值为第一个tomcat的路径;
这时候直接启动第一个tomcat,默认端口是8080;可在浏览器中输入该服务器IP:8080查看tomcat是否启动成功。
第二个tomcat
增加两个环境变量
CATALINA_HOME2,值为第二个tomcat的地址;
CATALINA_BASE2,值为新的tomcat地址;
修改参数
将bin目录下的.bat文件中的CATALINA_HOME和CATALINA_BASE后面都加上数字2;
将conf目录下的server.xml文件中以下三处涉及到的端口号改动一下,以免与第一个tomcat默认使用的端口冲突。
第一处:
这里主要区别在关闭Tomcat时,关闭的是那一个。
第二处:
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
这里主要区别多个Tomcat同时运行时,端口不冲突。
第三处:
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
启动第二个tomcat,用同样的方法查看有没有启动成功;
情况二:多个tomcat对应多个jdk
假设服务器已经配置好了第一个jdk的环境变量,并运行了与之对应的tomcat程序。
方法一
与上面思路类似,我们来配置第二个jdk的环境变量,以及修改与之对应的第二个tomcat的参数。
第二个jdk环境变量
JAVA_HOME2:第二个jdk的位置;
CATALINA_HOME2:第二个tomcat的位置
CLASSPATH2:./%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
修改第二个tomcat参数
将第二个tomcat中bin目录下所有的.bat文件打开,将其中所有的JAVA_HOME、CATALINA_HOME、CLASSPATH后面加上数字2;
在将第二个tomcat中config目录下,server.xml对应的三处端口都修改为与第一个tomcat不同。
分别启动不同的tomcat,可以在catalina.log中看到分别调用了不同的jdk。
方法二
tomcat可以设置需要使用的jdk,直接安装好第二个jdk之后,在tomcat的bin目录下,修改catalina.bat文件,在最上面加上两行条件:
set JAVA_HOME=第二个jdk安装路径;
set JRE_HOME=第二个jdk安装路径下的jre;
在startup.bat文件最后加上pause,启动tomcat之后就会打印相应的信息,包括所用的jdk版本。
目前看,方法二应该是最为简洁便利。也有网友强调同一台服务器,运行不同的tomcat,不应该配置其他的环境变量如CATALINA_HOME等,配置后会锁死Tomcat,导致在重新启动服务时出现问题。所以明天优先尝试方法二,期待顺利。
微信号:从零做软件测试
软件测试技术交流分享
领取专属 10元无门槛券
私享最新 技术干货