Catalina.bat是tomcat所有脚本中最重要的脚本,完成几乎所有的tomcat操作。如启动,关闭等等,都是由catalina.bat脚本来完成的。接下来,我将对Tomcat catalina.bat脚本进行分析。
首先省去catalina.bat开头诸多注解,这些注解主要是讲解各个变量是干什么的。需要的话,自己看下英文就可以了。这里就不翻译了。
rem Guess CATALINA_HOME if not defined 查看是否在tomcat目录下,与startup.bat里相同,不解释了。需要的话可以看我的另一篇博客。
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%
: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
:okHome
rem Get standard environment variables
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" 如果存在setenv.bat脚本,调用它,我的tomcat 没有这个脚本
rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath 查看是否存在setclasspath.bat脚本,如果存在,转到okSetclasspath位置
echo Cannot find %CATALINA_HOME%\bin\setclasspath.bat 否则输出下面两行,并退出
echo This file is needed to run this program
goto end
:okSetclasspath okSetclasspath位置
set BASEDIR=%CATALINA_HOME% 设定BASEDIR变量与CATALINA_HOME变量值相同
call "%CATALINA_HOME%\bin\setclasspath.bat" %1 调用setclasspath.bat脚本并加上参数
if errorlevel 1 goto end 如果存在错误 退出
rem Add on extra jar files to CLASSPATH 设定JSSE_HOME变量,如果存在加入CLASSPATH,不存在跳过
if "%JSSE_HOME%" == "" goto noJsse 检查是否存在JSSE_HOME变量
set CLASSPATH=%CLASSPATH%;%JSSE_HOME%\lib\jcert.jar;%JSSE_HOME%\lib\jnet.jar;%JSSE_HOME%\lib\jsse.jar 如果有加入到CLASSPATH变量后面
:noJsse
set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar 将bootstrap.jar加入到CLASSPATH里
if not "%CATALINA_BASE%" == "" goto gotBase 如果CATALINA_BASE变量不为空,跳过,转到gotBase位置
set CATALINA_BASE=%CATALINA_HOME% 如果为空,将CATALINA_BASE设为CATALINA_HOME变量的值
:gotBase
if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir CATALINA_TMPDIR不为空,跳过,转到gotTmpdir位置
set CATALINA_TMPDIR=%CATALINA_BASE%\temp 如果为空,将 CATALINA_TMPDIR设为%CATALINA_BASE%\temp变量的值(即tomcat\temp)
:gotTmpdir
if not exist "%CATALINA_HOME%\bin\tomcat-juli.jar" goto noJuli 如果不存在tomcat-juli.jar这个类,转到noJuli位置
set JAVA_OPTS=%JAVA_OPTS%
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -
Djava.util.logging.config.file="%CATALINA_BASE%\conf
\logging.properties" 如果存在,将变量加入到JAVA_OPTS里
:noJuli
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -Dfile
.encoding=UTF8 -Duser.timezone=GMT -Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config 设定JAVA_OPTS变量
echo Using CATALINA_BASE: %CATALINA_BASE% 输出CATALINA_BASE变量值
echo Using CATALINA_HOME: %CATALINA_HOME% 输出CATALINA_HOME变量值
echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR% 输出CATALINA_TMPDIR变量值
if ""%1"" == ""debug"" goto use_jdk 如果变量%1里存在debug ,转到use_jdk位置
echo Using JRE_HOME: %JRE_HOME% 输出JRE_HOME变量值
goto java_dir_displayed 转到java_dir_displayed
:use_jdk
echo Using JAVA_HOME: %JAVA_HOME% 输出JAVA_HOME变量值
:java_dir_displayed
下面几行设定相应变量
set _EXECJAVA=%_RUNJAVA%
set MAINCLASS=org.apache.catalina.startup.Bootstrap
set ACTION=start
set SECURITY_POLICY_FILE=
set DEBUG_OPTS=
set JPDA=
if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_shmem
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=jdbconn
:gotJpdaAddress
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
set JPDA_SUSPEND=n
:gotJpdaSuspend
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
set JPDA_OPTS=-Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
:gotJpdaOpts
shift
:noJpda
if ""%1"" == ""debug"" goto doDebug 如果%1为debug,转到doDebug,运行debug模式
if ""%1"" == ""run"" goto doRun 如果%1为run,转到doRun,运行正常模式
if ""%1"" == ""start"" goto doStart 如果%1为start,转到doStart,启动tomcat
if ""%1"" == ""stop"" goto doStop 如果%1为stop,转到doStop,关闭tocmat
if ""%1"" == ""version"" goto doVersion 如果%1为version,转到doVersion,显示tomcat的版本号
echo Usage: catalina ( commands ... ) 如果%1没有上述内容,输出下面几行,并结束
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?
goto end
:doDebug
shift 将%2里的值转到%1
set _EXECJAVA=%_RUNJDB% 将变量 _EXECJAVA设为_RUNJDB变量的值
set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\jakarta-tomcat-catalina\catalina\src\share"
设定DEBUG_OPTS变量
if not ""%1"" == ""-security"" goto execCmd
如果%1不为-security,转到execCmd位置
shift 将%2里的值转到%1
echo Using Security Manager 输出该行
set SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy
设定SECURITY_POLICY_FILE变量的值
goto execCmd 转到execCmd位置
:doRun
shift 将%2里的值转到%1
if not ""%1"" == ""-security"" goto execCmd 如果%1不为-security,转到execCmd位置
shift 将%2里的值转到%1
echo Using Security Manager 输出该行
set SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy
设定SECURITY_POLICY_FILE变量的值
goto execCmd 转到execCmd位置
:doStart
shift 将%2里的值转到%1
if not "%OS%" == "Windows_NT" goto noTitle 如果OS变量不为Windows_NT,转到noTitle
set _EXECJAVA=start "Tomcat" %_RUNJAVA% 设定_EXECJAVA变量的值
goto gotTitle 转到gotTitle位置
:noTitle
set _EXECJAVA=start %_RUNJAVA% 设定 _EXECJAVA 变量的值
:gotTitle
if not ""%1"" == ""-security"" goto execCmd 如果%1不为-security,转到execCmd位置
shift 将%2里的值转到%1
echo Using Security Manager 输出该行
set SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy
设定SECURITY_POLICY_FILE变量的值
goto execCmd 转到execCmd位置
:doStop
shift 将%2里的值转到%1
set ACTION=stop 将ACTION的变量设为stop
set CATALINA_OPTS= 设CATALINA_OPTS为空
goto execCmd 转到execCmd位置
:doVersion 显示tomcat版本号
%_EXECJAVA% -classpath "%CATALINA_HOME%\server\lib\catalina.jar" org.apache.catalina.util.ServerInfo 执行该命令
goto end 结束该程序
:execCmd
rem Get remaining unshifted command line arguments and save them in the
以下几行将命令参数存入CMD_LINE_ARGS变量中
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs
rem Execute Java with the applicable properties
if not "%JPDA%" == "" goto doJpda 如果JPDA变量不为空,转到doJpda位置
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
如果SECURITY_POLICY_FILE变量不为空,转到doSecurity位置
如果都没有执行下面命令,并结束该程序
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS%
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%"
-Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS%
%ACTION%
goto end
:doSecurity 执行下面命令,并结束该程序
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS%
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%"
-Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%"
-Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS%
%ACTION%
goto end
:doJpda
如果SECURITY_POLICY_FILE变量不为空,转到doSecurityJpda位置,为空执行下面命令,并结束该程序
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS%
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%"
-Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS%
%ACTION%
goto end
:doSecurityJpda 执行下面命令,并结束该程序
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS%
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%"
-Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%"
-Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS%
%ACTION%
goto end
:end
终结:
catalina.bat咋一看还以为是什么windows程序,可以双击运行,实际上就是调用java命令运行Bootstrap类。从上面代码可以看
出tomcat确实是一个纯java的程序,脚本最后都变成直接使用java命令执行程序,与我们普通写的java程序,没有什么不同。只不过由于
tomcat可以使用各种众多的模式(如debug,Security等),以及各种需要各种参数所以不得不使用脚本来执行。
如果你想看看你到底使用了什么命令可以在“if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity”这行下面添加两行。
echo %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dir ....(下面那段,是一行但太长,折行了)
pause
第一行的命令是打印这具话,系统会将% %里面的变量提换成找到的值并输出。第二行是暂停程序,你可以通过任意键来恢复运行。
下面是我的程序打印的结果:
start "Tomcat" "C:\Program Files\Java\jdk1.6.0_01\bin\java"
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="C:\work\tomcat\conf\logging.properties"
-Xms128m -Xmx512m -Dfile.encoding=UTF8 -Duser.timezone=GMT
-Djava.security.auth.login.config=C:\work\tomcat/conf/jaas.config
-Djava.endorsed.dirs="C:\work\tomcat\common\endorsed" -classpath
"C:\Program
Files\Java\jdk1.6.0_01\lib\tools.jar;C:\work\tomcat\bin\bootstrap.jar"
-Dcatalina.base="C:\work\tomcat" -Dcatalina.home="C:\work\tomcat"
-Djava.io.tmpdir="C:\work\tomcat\temp"
org.apache.catalina.startup.Bootstrap start
start
"tomcat"是另开一个窗口,窗口名是tomcat的意思,你可以去掉这部分,完将你程序打印的拷贝到命令行下,点回车,看是不是一样运行
tomcat了。Catalina.bat startup实际时就将各种系统变量加以总结,输出成这个命令。 呵呵!
=========================================================================
在安装版的Tomcat中没有catalina.bat,实际上这些catalina.bat的设置都是对注册表的修改,对应的注册表键值如下
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java\Options
=========================================================================
在使用MyEclipse+Tomcat发布项目的时候通常会给如下提示信息:[org.apache.catalina.core.AprLifecycleListener]-[INFO] The Apache Tomcat
Native library which allows optimal performance in production
environments was not found on the java.library.path:
(...你的系统环境PATH路径...)
在停止时发现出现如下信息
[org.apache.catalina.core.AprLifecycleListener]-[INFO] Failed shutdown of Apache Portable Runtime
解决:Windows下的安装配置与使用
1、先去 http://tomcat.heanet.ie/native/ 下载编译好的 tcnative-1.dll 文件,也可以下载tomcat-native.zip自己进行编译
2、修改一下 catalina.bat,加上
set CATALINA_OPTS="-Djava.library.path=../../APR/lib"
因为我把这个DLL放在与Tomcat目录同级的APR/lib目录下,所以采用了相对路径。或者把dll加到你的系统变量PATH里之类的,最简单的方法应当就是把tcnative-1.dll文件放在Tomcat的bin目录下:)
这样设置后,启动可以看到信息如下:
[org.apache.coyote.http11.Http11AprProtocol]-[INFO] Initializing Coyote HTTP/1.1 on http-9091
在停止时发现出现如下信息
[org.apache.coyote.http11.Http11AprProtocol]-[INFO] Pausing Coyote HTTP/1.1 on http-9091
......
[org.apache.coyote.http11.Http11AprProtocol]-[INFO] Stopping Coyote HTTP/1.1 on http-9091
这样就配置成功了。
分享到:
相关推荐
概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本...这个脚本的代码有点多, 就单独弄了一篇展示 catalina.bat 脚本中的内容. 点击 [catalina.bat
- 配置环境变量`CATALINA_HOME`指向Tomcat的根目录。 - 修改`conf/server.xml`配置文件,根据需要配置端口号、连接器和其他服务器设置。 - 可选地,配置`bin/startup.bat`和`bin/shutdown.bat`批处理脚本来启动和...
在本文中,我们将深入探讨Tomcat 10.0.23这一特定版本,了解其特点、功能以及如何在Windows x64平台上安装和配置。 首先,Tomcat是Apache软件基金会Jakarta项目的一部分,它的核心任务是实现Java Servlet和Java...
1. **bin目录**:包含启动和停止Tomcat的脚本,如`catalina.bat`、`startup.bat`和`shutdown.bat`,以及JAR文件,用于Tomcat的运行。 2. **conf目录**:存放Tomcat的主要配置文件,例如`server.xml`(定义服务器配置...
对于开发者来说,Tomcat 8.5.69提供了丰富的API和工具,如JMX(Java Management Extensions)用于监控和管理服务器状态,以及 Catalina、Coyote和 Jasper等核心组件,它们分别处理Servlet容器、HTTP协议处理和JSP...
1. **bin** 目录:包含了启动和停止Tomcat的脚本,如`startup.bat`和`shutdown.bat`,以及用于管理应用程序的工具,如`catalina.bat`和`tomcat7.exe`。 2. **conf** 目录:存储服务器配置文件,如`server.xml`...
在Windows平台上,Tomcat提供了方便的安装和管理方式。"apache-tomcat-8.5.66-windows-x64.zip"是专门为64位Windows系统设计的最新版本,确保在处理大量并发请求时具备更好的性能和稳定性。 在8.5.x系列中,Tomcat ...
- 配置环境变量:设置`CATALINA_HOME`指向Tomcat的安装目录,确保系统PATH变量包含 `%CATALINA_HOME%\bin`,以便于命令行调用Tomcat工具。 - 修改`conf/server.xml`:配置Tomcat服务器的主要设置,包括端口号、...
3. 配置环境变量`CATALINA_HOME`指向Tomcat安装目录。 4. 使用`bin/startup.bat`启动Tomcat,通过`bin/shutdown.bat`关闭。 5. 访问`http://localhost:8080`检查Tomcat是否正常运行。 开发人员可以利用Tomcat进行...
接着,配置环境变量,包括添加`CATALINA_HOME`指向Tomcat的安装目录,并将`PATH`环境变量添加 `%CATALINA_HOME%\bin`,以便在命令行中可以直接运行Tomcat的管理工具。 为了运行Tomcat,你需要先确保系统中已经安装...
1. `bin`:包含启动和停止Tomcat的脚本,如`catalina.bat`(Windows下的批处理文件)、`startup.sh`(Unix/Linux的Shell脚本)以及其他管理和配置工具。 2. `conf`:存储所有配置文件,如`server.xml`定义了服务器的...
1. **bin目录**:这个目录包含了用于启动、停止和管理Tomcat的各种脚本,如`catalina.bat`(Windows批处理文件)和`startup.sh`(Unix/Linux shell脚本)。还有其他辅助工具,如`configtest.bat`用于检查Tomcat配置...
- 解压后,可以通过bin目录下的startup.bat和shutdown.bat脚本启动和关闭Tomcat。 - 配置主要通过修改conf目录下的server.xml文件,可以设置端口号、连接器、全局JNDI资源等。 - 可以通过环境变量CATALINA_HOME...
3. **下载与安装**:下载完成后,用户需要解压zip文件到本地目录,然后配置环境变量,如设置CATALINA_HOME指向Tomcat的根目录。启动时通常使用bin目录下的startup.bat脚本。 4. **目录结构**: - `bin`:包含可...
安装和配置Tomcat 8.5.57时,你需要设置环境变量,如`CATALINA_HOME`指向Tomcat的安装目录,并确保Java开发工具(JDK)已经正确安装,因为Tomcat需要Java运行环境。此外,根据你的需求,你可能还需要修改`conf/...
- **bin**:包含了启动和停止Tomcat的脚本,如`catalina.bat`、`startup.bat`和`shutdown.bat`,以及用于管理应用的工具。 - **conf**:存放所有配置文件,如`server.xml`、`web.xml`等,这些都是调整Tomcat行为的...
在本文中,我们将深入探讨Apache Tomcat的核心功能、安装与配置、以及如何在Windows环境下使用Tomcat 9.0.74。 1. **Java Servlet和JSP技术** Java Servlet是Java平台上的服务器端编程模型,用于处理HTTP请求并...
`catalina.sh`或`catalina.bat`启动脚本提供了多种启动模式,如"jpda"用于调试,"start"用于后台运行等。 总的来说,Apache Tomcat 8.5.81是一个功能强大且易用的Java Web服务器,适合从小型项目到大型企业级应用的...
安装Tomcat非常简单,只需要解压"apache-tomcat-7.0.109-windows-x64.zip"文件到你选择的目录,然后设置环境变量CATALINA_HOME指向Tomcat的根目录。为了启动和停止Tomcat,你可以使用bin目录下的startup.bat和...
这个版本是为Windows 64位操作系统设计的,因此“apache-tomcat-9.0.86-windows-x64.zip”是一个包含了该软件的压缩包,用户可以通过解压来安装和运行Tomcat服务器。 在Tomcat 9.0.86中,有几个关键知识点值得深入...