zoukankan      html  css  js  c++  java
  • Tomcat8-启动脚本分析

    1. Tomcat也是一个java程序

    最终的入口启动文件:org.apache.catalina.startup.Bootstrap

    最后一条命令:  start "Tomcat" "C:Program FilesJavajdk1.8.0_131injava.exe"  "-Djdk.tls.ephemeralDHKeySize=2048" -Djava.util.logging.config.file="G:program-myapache-tomcat-8.0.36conflogging.prope rties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager   -Djava.endorsed.dirs="G:program-myapache-tomcat-8.0.36endorsed" -classpath "G:program-myapache-tomcat-8.0.36inootstr ap.jar;G:program-myapache-tomcat-8.0.36in	omcat-juli.jar" -Dcatalina.base="G:program-myapache-tomcat-8.0.36" -Dcatalina.home="G:program-myapache-tomcat-8.0.36" -Djava.io.tmpdir="G:program-my apache-tomcat-8.0.36	emp" org.apache.catalina.startup.Bootstrap  start
    

    2. 启动顺序如下

    涉及3个文件(分析只保留主要逻辑),执行顺序如下:
    startup.bat

    set "CURRENT_DIR=%cd%"
    cd ..
    set "CATALINA_HOME=%cd%"	//定位到Tomcat文件夹的根目录
    set "EXECUTABLE=%CATALINA_HOME%incatalina.bat"
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%	//执行catalina.bat start
    

    catalina.bat

    set "CATALINA_BASE=%CATALINA_HOME%"		//设置变量
    //如果CATALINA_HOME里面没有";", 跳转到homeNoSemicolon执行, 有就退出
    if "%CATALINA_HOME%" == "%CATALINA_HOME:;=%" goto homeNoSemicolon	
    if not exist "%CATALINA_BASE%insetenv.bat" goto checkSetenvHome	//无setenv.bat
    if exist "%CATALINA_HOME%insetclasspath.bat" goto okSetclasspath	//setclasspath.bat存在
    call "%CATALINA_HOME%insetclasspath.bat" %1%
    

    setclasspath.bat run

    set "JRE_HOME=%JAVA_HOME%"
    set _RUNJAVA="%JRE_HOME%injava.exe"		//指定java.exe
    set _RUNJDB="%JAVA_HOME%injdb.exe"
    

    catalina.bat

    set "CLASSPATH=%CLASSPATH%;"		//环境变量中配置的CLASSPATH
    set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%inootstrap.jar"	//设置bootstrap.jar地址
    set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%in	omcat-juli.jar"	//设置tomcat-juli.jar
    set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
    set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
    set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%"
    set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%"
    
    set _EXECJAVA=%_RUNJAVA%	//指定java.exe
    set MAINCLASS=org.apache.catalina.startup.Bootstrap		//指定入口文件类
    set ACTION=start
    set SECURITY_POLICY_FILE=
    set DEBUG_OPTS=
    set JPDA=
    
    if ""%1"" == ""start"" goto doStart
    if "%TITLE%" == "" set TITLE=Tomcat
    set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    
    %_EXECJAVA% %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%
  • 相关阅读:
    常用控件
    ThinkJS 中的Logic层
    ctx简介
    小程序商城的配置文件初读
    webstorm快捷键
    vue.js入门
    前端技术俗语js
    vue环境中生成二维码
    第二章第一个项目——关于mime
    第二章第一个项目——package.json
  • 原文地址:https://www.cnblogs.com/Desneo/p/7217903.html
Copyright © 2011-2022 走看看