不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

Q:Tomcat使用的jdk版本而不依赖环境变量

Posted on 2021-09-15 11:55  三年三班王小朋  阅读(90)  评论(0编辑  收藏  举报

 1)在tomcat中显式配置-JVM启动使用内存大小

解决:vim打开tomcat目录下的bin/catalina.sh文件,在文件最上部配置JAVA_OPTS属性。
windows下在catalina.bat中添加:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
linux下在catalina.sh中添加:
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
说明:大小配置:Xmn < Xms <= Xmx。如果Xmn >= Xms,启动可能会报Too little Mermory size的错误。

2)tomcat使用特定的jdk版本

场景:多个web项目使用同一个linux发布服务器,已发布的老旧的项目必须在jdk1.7版本下运行,新项目需要在jdk1.8上才能运行,此时就需要让新项目中tomcat启动使用jdk1.8,不去影响之前项目正常运行

解决:vim打开tomcat目录下的bin/setclasspath.sh文件,在文件最上部配置JAVA_HOMEJRE_HOME两个变量。

JAVA_HOME=JDK安装目录

JRE_HOME=%JAVA_HOME%/jre

windows

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_181
set JAVA_JRE=%JAVA_HOME%\jre

linux

在bin下找到setclasspath.sh,在文件的最开始加入如下代码:

export JAVA_HOME=/u01/java_home/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre

3.tomcat启动脚本之间的关系

bin目录下的
startup.sh---调用--->catalina.sh---引用--->setclasspath.sh
说明:
1>tomcat的startup.sh脚本主要用来判断环境,找到catalina.sh脚本源路径,将启动命令参数传递给catalina.sh执行;
2>setclasspath.sh检查各种变量是否赋值,验证tomcat启动停止需要涉及到的文件,保障tomcat顺利启动停止;
3>catalina.sh脚本使用了大量的判断,使用if作为参数的输入判断,核心的启动命令其实就是java命令。