tomcat脚本简要分析

tomcat的脚本在bin目录下,有:catalina、startup、shutdown、setenv、digest、version等。

其中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 debugger

echo   debug -security         Debug Catalina with a security manager

echo   jpda start                  Start Catalina under JPDA debugger

echo   
run                           Start Catalina in the current window

echo   run -security             Start in the current window with security manager

echo   
start                         Start Catalina in a separate window

echo   start -security           Start in a separate window with security manager

echo   stop                         Stop Catalina

echo   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 <algorithm> [-e <encoding>] <credentials>

例如:

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”脚本指定。

CATALINA_HOME和CATALINA_BASE环境变量不能在“setenv”脚本配置,因为他们用来定位那个文件。

5、只有在使用标准的脚本运行tomcat时才会使用“setenv”脚本;如果在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。

更多参考:

${CATALINA_HOME}/RUNNING.txt

${CATALINA_HOME}/bin

时间: 2024-10-12 20:26:36

tomcat脚本简要分析的相关文章

tomcat源码分析前的准备工作

Tomcat源码学习前的准备工作 注:由于网上的帖子大部分没有配套的图片和错误的分析,所有费了半天劲整理了此篇博客,希望大家少走弯路吧 下面我们就开始我们的Tomcat源码学习之旅. 1. 下载Tomcat6.0的源代码 首先,我们得下载Tomcat6.0的源代码.Tomcat源代码的版本控制工具不是CVS,而是Subversion,如果您的机器上没有安装Subversion,请从http://subversion.tigris.org/servlets/ProjectDocumentList?

u-boot学习(二):u-boot简要分析

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章,不要添加收藏夹,想着以后有时间再看,因为很有可能你以后再也不会看它们了. 想写总结的文章,不要想着等到以后有时间了再总结,因为很有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Android --- Zygote和System进程启动过程简要分析

Android --- Zygote和System进程启动过程简要分析 在看过<Android情景源代码>的Zygote启动章节后,作如下简要总结.Zygote进程在init进程启动过程中被以service服务的形式启动: service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class main socket zygote stream 660 root syste

Tomcat源码分析——启动与停止服务

前言 熟悉Tomcat的工程师们,肯定都知道Tomcat是如何启动与停止的.对于startup.sh.startup.bat.shutdown.sh.shutdown.bat等脚本或者批处理命令,大家一定知道改如何使用它,但是它们究竟是如何实现的,尤其是shutdown.sh脚本(或者shutdown.bat)究竟是如何和Tomcat进程通信的呢?本文将通过对Tomcat7.0的源码阅读,深入剖析这一过程. 由于在生产环境中,Tomcat一般部署在Linux系统下,所以本文将以startup.s

Tomcat源码分析--转

一.架构 下面谈谈我对Tomcat架构的理解 总体架构: 1.面向组件架构 2.基于JMX 3.事件侦听 1)面向组件架构 tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成,如Server.Service.Connector等,并基于JMX管理这些组件,另外实现以上接口的组件也实现了代表生存期的接口Lifecycle,使其组件履行固定的生存期,在其整个生存期的过程中通过事件侦听LifecycleEvent实现扩展.Tomcat的核心类图如下所示: 1.Catalina

uboot源码简要分析

uboot源码简要分析 一.uboot源码整体框架 源码解压以后,我们可以看到以下的文件和文件夹: cpu 与处理器相关的文件.每个子目录中都包括cpu.c和interrupt.c.start.S.u-boot.lds. cpu.c:初始化CPU.设置指令Cache和数据Cache等 interrupt.c:设置系统的各种中断和异常 start.S:是U-boot启动时执行的第一个文件,它主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础. u-boo

Tomcat源码分析之—具体启动流程分析

从Tomcat启动调用栈可知,Bootstrap类的main方法为整个Tomcat的入口,在init初始化Bootstrap类的时候为设置Catalina的工作路径也就是Catalina_HOME信息.Catalina.base信息,在initClassLoaders方法中初始化类加载器,然后通过反射初始化org.apache.catalina.startup.Catalina作为catalina守护进程: 一.load Bootstrap中load流程: 反射调用Catalina的load方法

loosejar原理简要分析

loosejar这个小工具可以动态分析出应用中有每个jar包的实际使用情况,详情请参阅<通过loosejar清理应用中冗余的jar包>基本原理是利用instrumentation的特性用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义.有了这样的功能,开发者就可以实现更为灵活的运行时虚拟机监控和 Java 类操作了.关于instrumentation的详细介绍,可以参阅这篇文章&l

TOMCAT源码分析(启动框架)

建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的. 所以得实践.实践.再实践. 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动过程. 如果有不明白的地方, 再来查阅本文, 看是否能得到帮助. 我相信这样效果以及学习速度都会好很多! 1. Tomcat的整体框架结构 Tomcat的基本框架, 分为4个层次. Top Level Elements: Server Service Connector HTTP AJP Conta