Tomcat脚本简要分析

来源:互联网 发布:淘宝刷心怎么刷 编辑:程序博客网 时间:2024/06/06 15:00

由于工作需要,研究一下tomcat中bin目录下所有脚本。
研究是apache-tomcat-8.0.24版本的解压版。

回顾一下windows脚本的基本写法
@:可能是注释,反正一行不显示
echo:on和off是开启关闭显示,中间的都会执行且显示,试一下就明白了
:::两个分号表示注释和@rem等效
pause:让程序暂停一下,显示一个按任意键继续。。。
冒号和goto:跳转去哪个标签
%:表示参数,据说只要前缀就可以,不知道为什么tomcat脚本都是前后都有比如%JAVA_HOME%

Tomcat的脚本在bin目录下,有:catalina、startup、shutdown、setenv、digest、version等。
其中service只在安装版中有,不清楚为什么,而这个文件可以把tomcat注册到系统服务中,这正是我需要的。
catalina 脚本 用于启动和关闭tomcat 服务器 ,是tomcat中最关键的脚本。
startup 脚本 和shutdown 脚本等 都是使用了不同的参数调用了catalina脚本:
startup 脚本 以start参数调用了catalina脚本,shutdown脚本以stop参数调用了catalina脚本。
首先按原文的思路来
catalina用法(摘自catalina脚本):

echo Usage:  catalina ( commands ... )echo commands:echo   debug             Start Catalina in a debuggerecho   debug -security   Debug Catalina with a security managerecho   jpda start        Start Catalina under JPDA debuggerecho   run               Start Catalina in the current windowecho   run -security     Start in the current window with security managerecho   start             Start Catalina in a separate windowecho   start -security   Start in a separate window with security managerecho   stop              Stop Catalinaecho   configtest        Run a basic syntax check on server.xmlecho   version           What version of tomcat are you running?

例如:
catalina.bat start 在一个不同的窗口启动tomcat
catalina.bat run 在当前窗口启动tomcat
catalina.bat stop 关闭tomcat

digest是用指定的算法加密密码的脚本。
digest脚本用法:
Usage: RealmBase -a [-e ]
例如:
digest.bat -a MD5 password
运行结果如下:
password:5f4dcc3b5aa765d61d8327deb882cf99
MD5有16位和32位,加密后的字符串为十六进制数字,是不可逆的加密算法。
16位MD5加密后的字符串是提取了32位MD5加密后的字符串的中间16位。

version脚本是catalina服务器的版本脚本, 可以查看tomcat、os、JVM的版本等。
vresion脚本用法:
catalina.bat version或 version.bat,运行结果如下:
这里写图片描述

摘录 catalina.bat 一些重要的注释
Environment Variable Prerequisites
CATALINA_HOME May point at your Catalina “build” directory.
CATALINA_BASE (Optional) Base directory for resolving dynamic portions of a Catalina installation.
If not present, resolves to the same directory that CATALINA_HOME points to.
CATALINA_OPTS (Optional) Java runtime options used when the “start”, or “run” command is executed.
JAVA_OPTS (Optional) Java runtime options used when the “start”, “stop”, or “run” command is executed.

Start/Stop Script for the CATALINA Server
译:CATALINA服务器的启动/停止脚本

Guess CATALINA_HOME if not defined
译:如果未定义,猜测CATALINA_HOME

Copy CATALINA_BASE from CATALINA_HOME if not defined
译:如果未定义,从CATALINA_HOME复制到CATALINA_BASE

Ensure that any user defined CLASSPATH variables are not used on startup,
but allow them to be specified in setenv.bat, in rare case when it is needed.
译:确保在启动时任何用户定义的CLASSPATH变量未被使用,但是如果需要在特殊情况下允许他们在setenv.bat指定

Get standard environment variables
译:获得标准的环境变量

Get standard Java environment variables
译:获得标准的java环境变量

Add tomcat-juli.jar and bootstrap.jar to classpath
tomcat-juli.jar can be over-ridden per instance
Note that there are no quotes as we do not want to introduce random
quotes into the CLASSPATH
译:将tomcat-juli.jar和bootstrap.jar添加到classpath
每个实例中tomcat-juli.jar可以被覆盖

Execute The Requested Command
译:执行需要的命令

Get remaining unshifted command line arguments and save them in the
译:获得剩余未移位的命令行参数

Execute Java with the applicable properties
译:用应用属性执行java

总结:
1、CATALINA_HOME是Tomcat的安装目录,CATALINA_BASE是Tomcat的工作目录。
如果没有配置多个实例,CATALINA_BASE和CATALINA_HOME是一样的。
2、Tomcat默认使用JULI日志系统(可以参考官网文档修改成使用log4j)。与之相关的是 tomcat-juli.jar。
3、Tomcat的启动类是Bootstrap,它承担着管理Catalina的责任。与之相关的是 bootstrap.jar。
4、除了CATALINA_HOME和CATALINA_BASE环境变量,所有的环境变量都可以在“setenv“(setclasspath)脚本指定。
CATALINA_HOME和CATALINA_BASE环境变量不能在“setenv”(setclasspath)脚本配置,因为他们用来定位那个文件。
5、只有在使用标准的脚本运行tomcat时才会使用“setenv”(setclasspath)脚本;如果在windows上将tomcat安装成服务,服务包装器直接
运行java(tomcat.exe),不使用脚本文件。
6、启动tomcat可以使用startup.bat或catalina.sh脚本,也可以使用catalina.bat/catalina.sh start,
这样会在新窗口中启动Catalina;
可以使用catalina.bat/catalina.sh run则会在当前窗口启动Catalina。
7、CATALINA_OPTS允许指定启动Tomcat的java命令的附加选项。
注意:不要用JAVA_OPTS制定内存限制, 用来停止Tomcat的进程你不需要许多内存,那些设置都属于CATALINA_OPTS。
8、CATALIAN_OPTS与JAVA_OPTS不同:
CATALIAN_OPTS和 JAVA_OPTS中的变量在 tomcat的 启动 命令”start”和”run” 被执行时使用, 在 tomcat的 关闭 命令”stop” 被执行时只有 JAVA_OPTS 中的变量可以被 使用。
其他应用也可能使用 JAVA_OPTS,tomcat将使用 CATALIAN_OPTS。

再看一下setclasspath
rem In debug mode we need a real JDK (JAVA_HOME)
if “”%1”” == “”debug”” goto needJavaHome
译:就是说debbug模式需要jdk

rem Otherwise either JRE or JDK are fine
if not “%JRE_HOME%” == “” goto gotJreHome
if not “%JAVA_HOME%” == “” goto gotJavaHome
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
echo At least one of these environment variable is needed to run this program
goto exit
译:这段脚本和下面的:gotJavaHome:gotJreHome两处脚本,其实就是当jre和jdk环境变量有一个有时,没有的参照有的。其他也是类似的,当没有jre和jdk时报错。这文件没什么用

更多参考:
CATALINAHOME/RUNNING.txt{CATALINA_HOME}/bin

参考资料
http://my.oschina.net/donhui/blog/336786

0 0
原创粉丝点击