美文网首页工作中源代码学习
tomcat启动:startup.sh、catalina.sh、

tomcat启动:startup.sh、catalina.sh、

作者: ___TheOne___ | 来源:发表于2018-10-24 18:16 被阅读156次

    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分析

    相关文章

      网友评论

        本文标题:tomcat启动:startup.sh、catalina.sh、

        本文链接:https://www.haomeiwen.com/subject/avyxtqtx.html