tomcat启动:startup.sh、catalina.sh、setclasspath.sh三者关系

1.概述

JavaWeb项目发布tomcat容器,我们一般是到tomcat下的bin/startup.sh直接运行。很少去了解tomcat底层启动细节。
后来实际开发中,需要在tomcat中显式配置-JVM启动使用内存大小tomcat启动使用特定的jdk版本,才去大致了解下启动过程。

2.问题解决

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

解决:vim打开tomcat目录下的bin/catalina.sh文件,在文件最上部配置JAVA_OPTS属性。

 

# -----------------------------------------------------------------------------

#在文件的最上部添加
JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx512m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=512m"

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false
darwin=false
os400=false
hpux=false
case "`uname`" in
CYGWIN*) cygwin=true;;
Darwin*) darwin=true;;
OS400*) os400=true;;
HP-UX*) hpux=true;;
esac

说明:大小配置:Xmn < Xms <= Xmx。如果Xmn >= Xms,启动可能会报Too little Mermory size的错误。

2)tomcat启动使用特定的jdk版本

场景:多个web项目使用同一个linux发布服务器,其他已发布的老旧的项目必须在jdk1.6版本下运行,且linux环境的classpath配置是jdk1.6。可是你的新项目需要在jdk1.7上才能运行,此时就需要让tomcat启动使用特定的jdk1.7,同时不去影响之前使用jdk1.6的web项目

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

 

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64
JRE_HOME=$JAVA_HOME/jre

说明:有的文章写为

set JAVA_HOME=/usr/lib/jvm/javaxxx
set JRE_HOME=$JAVA_HOME/jre

或者写为

export JAVA_HOME=/usr/lib/jvm/javaxxx
export JRE_HOME=$JAVA_HOME/jre

这两种写法都不正确:set会导致使用startup.sh启动项目的时候报Using catallina.sh commands;而使用export则会影响服务器上之前的jdk1.6的项目。

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命令。

文章参考:

1.tomcat启动脚本startup.sh分析

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值