tomcat啓動(一)startup.bat|catalina.bat分析

環境:windows X64位 Tomcat8.0.47html

bootstrap.jar是tomcat的內核java

開始位置web

startup.batapache

查看文本bootstrap

具體的批處理腳本語法能夠查看我整理的文章windows

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

.bat學習-基礎語法(經常使用)安全

會先判斷系統環境變量是否爲空,若是爲空則設置當前目錄路徑爲CATALINA_HOME的值,而後調用catalina.bat腳本ide

在這個腳本內設置CATALINA_HOME 環境變量的值CATALINA_HOMT表明tomcat的安裝目錄(不是bin目錄)post

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%\bin\java.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 Files\Java\jdk1.8.0_66\bin\java.exe
 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
 -Djava.endorsed.dirs="%CATALINA_HOME%\endorsed" -classpath "%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar"
 -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_BASE%\temp" org.apache.
 catalina.startup.Bootstrap start

 

 

_EXECJAVA=start "%TITLE%" %_RUNJAVA%
  _RUNJAVA = %JRE_HOME%\bin\java.exe

"%LOGGING_CONFIG%" == "" goto noJuliConfig其實應該是空了,直接跳轉到noJuliConfig標號Override Tomcat's logging config file 覆蓋tomcat的日誌配置文件
LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.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%\temp"                Defaults to%CATALINA_BASE%\temp.
"CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-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%\bin\bootstrap.jar"

"CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"

最終"CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar"

 

 

 

 

setclasspath.bat

也是設置環境變量

  • JAVA_HOME
  • JRE_HOME
  • JAVA_ENDORSED_DIRS = %CATALINA_HOME%\endorsed
  • _RUNJAVA = %JRE_HOME%\bin\java.exe
  • _RUNJDB = %JAVA_HOME%\bin\jdb.exe

參考資源

Tomcat8-啓動腳本分析

相關文章
相關標籤/搜索