zoukankan      html  css  js  c++  java
  • tomcat启动(一)startup.bat|catalina.bat分析

    环境:windows X64位 Tomcat8.0.47

    bootstrap.jar是tomcat的内核

    开始位置

    startup.bat

    查看文本

    具体的批处理脚本语法可以查看我整理的文章

    https://www.cnblogs.com/gne-hwz/p/10009130.html

    .bat学习-基础语法(常用)

    会先判断系统环境变量是否为空,如果为空则设置当前目录路径为CATALINA_HOME的值,然后调用catalina.bat脚本

    在这个脚本内设置CATALINA_HOME 环境变量的值CATALINA_HOMT代表tomcat的安装目录(不是bin目录)

    catalina.bat

    这里主要设置的CATALINA_BASE的值,如果环境变量中不存在就将CATALINA_HOME的值赋值给它。

    设置临时环境变量CLASSPATH

    如果 Tomcat 的 bin 目录下面存在 setnv.bat 脚本的话, 就执行它. 通常情况下是没有的.

    继而又判断 setclasspath.bat 脚本是否存在, 如果不存在的话, 直接报错, 停止启动 Tomcat.

    如果存在的话, 就去调用它, 并把 第一个参数传进去.

    执行完setclasspath后继续执行catalina.bat

    把 Tomcat bin 目录下的 bootstrap.jar 加入到CLASSPATH环境变量中

    设置 CATALINA_TMPDIR 环境变量的值为 Tomcat 目录下的 temp 目录

    把 Tomcat bin 目录下的 tomcat-juli.jar 加入到CLASSPATH中

    继续设置环境变量

    • _RUNJAVA : %JRE_HOME%injava.exe
    • MAINCLASS : 指定了 Tomcat 的启动类, 没错 main 方法就是在这个类里面.
    • ACTION : 动作: 就是启动
    • SECURITY_POLICY_FILE : 安全策略文件, 如果启动的时候加上了 -security 参数的话, 下面会对这个参数指定到 Tomcat 的 conf 目录下的 catalina.policy 文件.
    • JPDA : 这个参数可以百度一下, 我们平时几乎用不到.

    最后到:execCmd

    为执行_EXECJAVA这个变量所指定的内容

    将_EXECJAVA后面的值追加在_EXECJAVA这个变量后面

    这段长命令就是来启动 BootStrap 类, 并把相应的参数传进去--------进入BootStrap的main方法

    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

    最后解析出来这条长命令内容:以startup.bat方式启动tomcat

    start "Tomcat" C:Program FilesJavajdk1.8.0_66injava.exe
     -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
     -Djava.endorsed.dirs="%CATALINA_HOME%endorsed" -classpath "%CATALINA_HOME%inootstrap.jar;%CATALINA_BASE%in	omcat-juli.jar"
     -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_BASE%	emp" org.apache.
     catalina.startup.Bootstrap start
    _EXECJAVA=start "%TITLE%" %_RUNJAVA%
      _RUNJAVA = %JRE_HOME%injava.exe
    
    "%LOGGING_CONFIG%" == "" goto noJuliConfig其实应该是空了,直接跳转到noJuliConfig标号Override Tomcat's logging config file 覆盖tomcat的日志配置文件
    LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%conflogging.properties"
    
    "%LOGGING_MANAGER%" == "" goto noJuliManager为空直接跳转到noJuliManager标号 覆盖tomcat的日志管理
    LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
    "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
    "JAVA_OPTS=-Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
    CATALINA_OPTS为空。
    DEBUG_OPTS为空
    JAVA_ENDORSED_DIRS      JAVA_ENDORSED_DIRS = %CATALINA_HOME%endorsed                Defaults to $CATALINA_HOME/endorsed.
    CATALINA_TMPDIR          "CATALINA_TMPDIR=%CATALINA_BASE%	emp"                Defaults to%CATALINA_BASE%	emp.
    "CLASSPATH=%CATALINA_HOME%inootstrap.jar;%CATALINA_BASE%in	omcat-juli.jar"
    MAINCLASS=org.apache.catalina.startup.Bootstrap
    CMD_LINE_ARGS不会有参数
    ACTION=start

    JAVA_OPTS (Optional)

    JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
    
    JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
    
    "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
    
    最终"JAVA_OPTS=-Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
    JSSE_OPTS (Optional) Java runtime options used to control the TLS(安全传输协议)
    rem implementation when JSSE is used. Default is:
    rem "-Djdk.tls.ephemeralDHKeySize=2048"
    
    
    
    java运行时的可选项,包括除了CATALINA_OPTS之外的所有选项
    Java runtime options used when any command
     is executed.
     Include here and not in CATALINA_OPTS all options, that
     should be used by Tomcat and also by the stop process,
     the version command etc.
     Most options should go into CATALINA_OPTS.

     CLASSPATH

    确保windows系统中的CLASSPATH环境变量值不会用在startup-----CLASSPATH初始值为空
    
    Ensure that any user defined CLASSPATH variables are not used on startup,
    
    CLASSPATH=%CLASSPATH%%CATALINA_HOME%inootstrap.jar"
    
    "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%in	omcat-juli.jar"
    
    最终"CLASSPATH=%CATALINA_HOME%inootstrap.jar;%CATALINA_BASE%in	omcat-juli.jar"

    setclasspath.bat

    也是设置环境变量

    • JAVA_HOME
    • JRE_HOME
    • JAVA_ENDORSED_DIRS = %CATALINA_HOME%endorsed
    • _RUNJAVA = %JRE_HOME%injava.exe
    • _RUNJDB = %JAVA_HOME%injdb.exe

    参考资源

    Tomcat8-启动脚本分析

  • 相关阅读:
    Python+Selenium学习笔记8
    Python+Selenium学习笔记7
    Python+Selenium学习笔记6
    Python+Selenium学习笔记5
    Python+Selenium学习笔记4
    java类为什么是单继承。类的继承,实现接口。
    类,对象之间的关系
    java 向上转型 向下转型
    jsp 中 request.getHeader() 相关详细
    MyEclipse使用经验总结
  • 原文地址:https://www.cnblogs.com/gne-hwz/p/7683132.html
Copyright © 2011-2022 走看看