文档章节

Tomcat8源码分析1--启动脚本startup.bat

德胜
 德胜
发布于 2014/10/23 20:06
字数 595
阅读 448
收藏 1

    有篇博客讲的很好 : http://blog.csdn.net/flyliuweisky547/article/details/22208275

  1. 启动脚本startup.bat注释

@echo off

rem 设置对环境的修改本地化,setlocal到endlocal命令之间对环境修改不印象endlocal后的代码
setlocal

rem 设置环境变量CURRENT_DIR为当前目录, 如果环境变量CATALINA_HOME不为空, 跳转到:gotHome开始执行
rem 否则CURRENT_DIR为当前目录, 如果存在%CATALINA_HOME%\bin\catalina.bat就跳转到okHome开始执行
rem 否则切换到上级目录设置CATALINA_HOME当前目录,然后再返回开始的目录
rem 经过上面的步骤,确定了CATALINA_HOME的路径
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"

rem 如果CATALINA_HOME下存在\bin\catalina.bat, 跳转到okHome处执行
rem 否则提示错误,退出
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end

rem 设置EXECUTABLE变量为\bin\catalina.bat路径.
rem 检查EXECUTABLE路径对于的文件(catalina.bat)是不是存在, 存在就跳转到okExec处执行
rem 否则报错:没有找到catalina.bat 结束程序
:okHome
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
if exist "%EXECUTABLE%" goto okExec
echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end

rem 存在catalina.bat的时候执行这里的逻辑
:okExec
set CMD_LINE_ARGS=

rem 如果第一个命令行参数为空, 跳转到doneSetArgs处执行
rem 否则设置CMD_LINE_ARGS=CMD_LINE_ARGS+参数值, shift(命令行参数左移移位)
rem 跳转到setArgs循环处理, 直到拼接完所有命令行参数
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs

rem 执行命令catalina.bat start 参数
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS%

rem 结束
:end

   

   可以看到主要功能是找到CATALINA_HOME,然后调用 catalina.bat start [执行startup.bat是带的参数]

   调用startup.bat最终执行命令为:

start "Tomcat" "E:\Program\Java\jdk1.7.0_45\bin\java.exe"  
    -Djava.util.logging.config.file="G:\workerspace\haogrgr-tomcat8\output\conf\logging.properties" 
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager    
    -Djava.endorsed.dirs="G:\workerspace\haogrgr-tomcat8\output\endorsed" 
    -classpath "G:\workerspace\haogrgr-tomcat8\output\bin\bootstrap.jar;G:\workerspace\haogrgr-tomcat8\output\bin\tomcat-juli.jar" 
    -Dcatalina.base="G:\workerspace\haogrgr-tomcat8\output" 
    -Dcatalina.home="G:\workerspace\haogrgr-tomcat8\output" 
    -Djava.io.tmpdir="G:\workerspace\haogrgr-tomcat8\output\temp" 
        org.apache.catalina.startup.Bootstrap  
            start


  调用shutdown.bat最终执行的命令为:

"E:\Program\Java\jdk1.7.0_45\bin\java.exe"  
    -Djava.util.logging.config.file="G:\workerspace\haogrgr-tomcat8\output\conf\logging.properties" 
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager    
    -Djava.endorsed.dirs="G:\workerspace\haogrgr-tomcat8\output\endorsed" 
    -classpath "G:\workerspace\haogrgr-tomcat8\output\bin\bootstrap.jar;G:\workerspace\haogrgr-tomcat8\output\bin\tomcat-juli.jar" 
    -Dcatalina.base="G:\workerspace\haogrgr-tomcat8\output" 
    -Dcatalina.home="G:\workerspace\haogrgr-tomcat8\output" 
    -Djava.io.tmpdir="G:\workerspace\haogrgr-tomcat8\output\temp" 
        org.apache.catalina.startup.Bootstrap  
            stop


© 著作权归作者所有

德胜
粉丝 59
博文 31
码字总数 41512
作品 0
长沙
私信 提问
如何在 OpenShift 上运行 Apache Tomcat 8

Redhat公司推出了OpenShift服务。开发者可以在OpenShift上面尝试新的框架,编程语言或者服务器。当我在学习 WebSockets的时候了解到目前Apache Tomcat 8已经支持 JSR356规范。JSR356是Java下...

oschina
2013/08/01
7.7K
16
windows下一个tomcat版本创建多个实例

首先下载一个tomcat我们在任意一个盘符内创建一个文件夹,下面有tomcat1,tomcat2,tomcat3,等等 复制tomcat中conf到tomcat1,tomcat2,tomcat3,中 修改server.xml配置文件中的三个端口,不要有重...

luamas
2014/02/23
0
0
Centos7 安装 tomcat8

安装tomcat8 下载 配置环境 1) vi bin/setenv.sh 2) vi conf/catalina.properties tomcat.util.scan.StandardJarScanFilter.jarsToSkip= *.jar systemd开机启动 启动脚本 vi /usr/lib/system......

jackblues
2016/09/01
42
0
openshift/origin工作记录(1)——S2I镜像定制(基于SVN)

上周的工作内容是迁移微服务管控平台到openshift集群上。定制了基于git的S2I,走通了从gitlab拉取代码、打包、部署等一系列流程,成功迁移并向部门老大做了汇报。 本周的工作是定制基于SVN的...

huqigang
2017/10/25
0
0
Tomcat 源码分析(-)启动过程分析

前面几篇文章分别介绍了Tomcat的安装、优化和框架,本文主要用于分析Tomcat源码启动过程,研究一个框架最好的着手方式可能就是研究它的启动过程,因为在这过程中我们可以看到它内部的层次关系...

AaronSheng
2016/11/28
29
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式

//分静态代理和动态代理,区别:是否再编译时知道被被代理的对象 //思想,被代理类将自己的处理交给代理类,代理类可以添加一些新的功能,之后有代理类和客户端交互 https://www.cnblogs.co...

南桥北木
21分钟前
1
0
Spring系列教程七: Spring 整合mybatis的四种方式

一、使用注解实现整合mybatis 项目目录如下 第一步、导入jar包 <build> <resources> <!-- mapper.xml文件在java目录下 --> <resource> ......

我叫小糖主
26分钟前
5
0
阿里P7架构师:这些技术点没搞懂,我劝你不要跳槽!

阿里P7架构师架构师:这些技术点没搞懂,我劝你不要跳槽! 哪些技术点呢? 废话不多说,技术点全在下面这6张图里面了! 1.怎么看源码? 2.分布式 3.微服务 4.性能优化 5.工程化 粉丝福利:一...

别打我会飞
45分钟前
4
0
易错题

父类必须有一个无参构造,不然会报Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor...

architect刘源源
49分钟前
1
0
使用Json4s 将带有Timestamp的对象转json时 变为所在时区

在有Timestamp属性的对象转json时 最后出来的时间会减小8小时,是因为变成了0时区,需要将隐式转换中添加设置本地时区 import org.json4s.{DefaultFormats, Formats}import org.json4s.jac...

可达鸭Go
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部