源计划--Tomcat计划(一)

来源:互联网 发布:windows激活密钥 编辑:程序博客网 时间:2024/05/30 02:26

startup.bat 分析–Tomcat的入口脚本
我的Tomcat安装路径是:D:\tomcat-res-project\apache-tomcat-8.5.5-src

starup.bat内容

@echo offrem Licensed to the Apache Software Foundation (ASF) under one or morerem contributor license agreements.  See the NOTICE file distributed withrem this work for additional information regarding copyright ownership.rem The ASF licenses this file to You under the Apache License, Version 2.0rem (the "License"); you may not use this file except in compliance withrem the License.  You may obtain a copy of the License atremrem     http://www.apache.org/licenses/LICENSE-2.0remrem Unless required by applicable law or agreed to in writing, softwarerem distributed under the License is distributed on an "AS IS" BASIS,rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.rem See the License for the specific language governing permissions andrem limitations under the License.rem ---------------------------------------------------------------------------rem Start script for the CATALINA Serverrem ---------------------------------------------------------------------------setlocalrem Guess CATALINA_HOME if not definedset "CURRENT_DIR=%cd%"if not "%CATALINA_HOME%" == "" goto gotHomeset "CATALINA_HOME=%CURRENT_DIR%"if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomecd ..set "CATALINA_HOME=%cd%"cd "%CURRENT_DIR%":gotHomeif 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:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"rem Check that target executable existsif exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end
rem Guess CATALINA_HOME if not definedset "CURRENT_DIR=%cd%"if not "%CATALINA_HOME%" == "" goto gotHomeset "CATALINA_HOME=%CURRENT_DIR%"if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomecd ..set "CATALINA_HOME=%cd%"cd "%CURRENT_DIR%":gotHomeif 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:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

这一段主要是设置系统变量CATALINA_HOME.

set “CURRENT_DIR=%cd%”设置CURRENT_DIR为当前目录,由于startup.bat是在D:\tomcat-res-project\apache-tomcat-8.5.5-src\bin下的,所以CURRENT_DIR=D:\tomcat-res-project\apache-tomcat-8.5.5-src\bin

if not “%CATALINA_HOME%” == “” goto gotHome
set “CATALINA_HOME=%CURRENT_DIR%”
如果CATALINA_HOME变量非空跳转到gotHome,否则将CURRENT_DIR 的值赋给CATALINA_HOME,因为我们一般是不设置环境变量CATALINA_HOME,所以if not “%CATALINA_HOME%” == “”一般是返回false的,所以会执行set “CATALINA_HOME=%CURRENT_DIR%”

if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomecd ..set "CATALINA_HOME=%cd%"cd "%CURRENT_DIR%"

如果存在%CATALINA_HOME%\bin\catalina.bat那么跳转到okHome,因为之前设置过CURRENT_DIR,所以%CATALINA_HOME%\bin\catalina.bat等同于D:\tomcat-res-project\apache-tomcat-8.5.5-src\bin\bin\catalina.bat,因此此判断是返回false的。
接着执行cd..,这很容易理解,就是进入上一层目录,因此此时%cd%为D:\tomcat-res-project\apache-tomcat-8.5.5-src,执行set “CATALINA_HOME=%cd%”之后,CATALINA_HOME的值为D:\tomcat-res-project\apache-tomcat-8.5.5-src

:gotHomeif 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:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

gotHome判断catalina.bat存在性,不存在就退出脚本
okHome设置变量EXECUTABLE

rem Check that target executable existsif exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end

这一段是判断变量EXECUTABLE的存在性,存在则跳转到okExec,不存在则输出提示信息然后退出脚本
oKExec主要是读取命令参数,空参数则跳转到doneSetArgs,非空参数则保存参数到CMD_LINE_ARGS变量中
doneSetArgs执行EXECUTABLE ,实际是上就是调用catalina.bat并附带start参数或者%CMD_LINE_ARGS%所代表的参数

总的来说startup.bat就是找到catalina.bat并调用它

0 0
原创粉丝点击