国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

解析Tomcat的啟動腳本--startup.bat

2019-11-02 16:40:32
字體:
來源:轉載
供稿:網友

概述

我們通常使用 Tomcat 中的 startup.bat 來啟動 Tomcat. 但是這其中干了一些什么事呢?

大家都知道一個 Java 程序需要啟動的話, 肯定需要 main 方法, 那么這個 main 方法在哪呢?

Tomcat 腳本中又是配置了一些什么參數呢, 什么情況下 Tomcat 會啟動失敗呢?

帶著一些列的疑問我們來分析 Tomcat 的三個最重要的啟動腳本:

startup.bat catalina.bat setclasspath.bat

startup.bat 腳本

該腳本主要做了以下幾件事:

設置 CATALINA_HOME 環境變量的值 找到 catalina.bat 腳本 調用 catalina.bat 腳本, 并把參數傳過去

貼出簡化版本的 startup.bat 腳本的內容

@echo offrem 執行這個命令之后, 增加或者改動的環境變量只限于匹配到 endlocal 命令或者到達文件末尾.setlocalrem 假設 CATALINA_HOME 環境變量沒有定義rem 取當前目錄的路徑值, 賦給 CURRENT_DIR 變量, 就是 ./apache-tomcat-x.x.xx/binset "CURRENT_DIR=%cd%"rem 如果 CATALINA_HOME 變量值不是 "" 的話, 調到 gotHome 標簽處if not "%CATALINA_HOME%" == "" goto gotHomerem 如果 CATALINA_HOME 是 "" 的話, 設置 CATALINA_HOME 變量值為 當前目錄的路徑值(./apache-tomcat-x.x.xx/bin)set "CATALINA_HOME=%CURRENT_DIR%"rem 判斷當前路徑下的是否有 bin/catalina.bat, 也就是 ./apache-tomcat-x.x.xx/bin/bin/catalina.batrem 如果存在的話, 直接調到 okHome 標簽處, 顯然是不存在的if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHomerem 不存在的話, CATALINA_HOME 取上級目錄的值, 也就是(./apache-tomcat-x.x.xx/)cd ..set "CATALINA_HOME=%cd%"rem 進入 CURRENT_DIR(./apache-tomcat-x.x.xx/bin)cd "%CURRENT_DIR%":gotHomerem 通過上面的設置, CATALINA_HOME 的值已經是: ./apache-tomcat-x.x.xx/rem 所以整理是可以找到 catalina.bat 腳本的, 直接調到 okHome 標簽處if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomerem 設置 EXECUTABLE 變量指向為 catalina.bat 腳本set "EXECUTABLE=%CATALINA_HOME%/bin/catalina.bat"rem 檢查目標可執行文件(catalina.bat)是否存在, 通常情況下是存在的, 直接調到 okExec 標簽處rem 如果不存在的話, 直接退出. 啟動 Tomcat 結束if exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem 獲取剩余的沒有用 shift 取出來的命令行參數, 并保存它們在 CMD_LINE_ARGSset CMD_LINE_ARGS=:setArgsrem 如果第一個命令行參數是空的話, 跳到 doneSetArgs 標簽處rem "%1" : 表示執行命令之后的第一個參數if ""%1""=="""" goto doneSetArgsrem 第一個參數不是空的話, 拼接到 CMD_LINE_ARGS 變量set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1rem 這個命令可以自行百度shiftgoto setArgs:doneSetArgsrem 上面設置了 EXECUTABLE 變量的值是指向了 catalina.bat 腳本, 這個利用 call 命令執行調用, 并把參數傳進去rem 接下來, 咱們看 catalina.bat 腳本的內容rem 完整的命令: ./apache-tomcat-x.x.xx/bin/catalina.bat startcall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end

要想理解腳本中的一些命令, 首先來了解一下常用的命令(我們用的 Window 版的)

rem : 該命令后的代碼不會被執行, 相當于注釋 @echo off : 關閉命令的顯示, 如果沒有設置, 執行了哪些命令都會顯示出來 echo : 輸出后面的內容 setlocal : 執行這個命令之后, 增加或者改動的環境變量的作用范圍只限于匹配到 endlocal 命令或者到達文件末尾. set : 設置一個變量 :xxx : 定義一個標簽 goto : 跳轉到制定的標簽處 call : 執行命令
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都兰县| 霍林郭勒市| 甘洛县| 冀州市| 卢湾区| 盐源县| 夹江县| 永丰县| 舟曲县| 综艺| 吕梁市| 荔波县| 伊宁县| 海阳市| 阳东县| 麻城市| 云龙县| 红原县| 蓬溪县| 浦江县| 达日县| 永年县| 称多县| 武义县| 江永县| 五莲县| 沙河市| 菏泽市| 西林县| 开鲁县| 赤水市| 栾川县| 新余市| 长寿区| 青岛市| 育儿| 和顺县| 阿坝| 竹山县| 金坛市| 井研县|