Tomcat是应用颇广的Servlet和JSP的容器,可以说几乎每个学习JSP的人都接触过它。在实际开发环境中,它还可以作为轻巧灵便的应用服务器用来调试和部署。在Tomcat上开发的Servlet和JSP程序,可以非常方便地部署到Weblogic及Websphere等生产服务器上去。有些情况下,它还可以和Apache Web Server配合使用,作为小型企业的Web Application Server。本文以Tomcat5.0.28为例,讨论一下Tomcat的启动过程及常见问题。大家都知道,Tomcat最普遍的启动方法就是在DOS命令行窗口中执行Tomcat的bin目录下的startup.bat文件(双击该文件即可启动)。
@echo off if "%OS%" == "Windows_NT" setlocal rem --------------------------------------------------------------------------- rem Start script for the CATALINA Server rem rem $Id: startup.bat,v 1.6 2004/05/27 18:25:11 yoavs Exp $ rem ---------------------------------------------------------------------------
rem 首先定义一个变量 CURRENT_DIR,然后把当前目录作为一个字符串赋给它 rem Guess CATALINA_HOME if not defined set CURRENT_DIR=%cd%
rem 如果CATALINA_HOME变量已经赋值,程序转到gotHome行继续 if not "%CATALINA_HOME%" == "" goto gotHome
rem 把当前目录的值作为字符串赋给 CATALINA_HOME变量 set CATALINA_HOME=%CURRENT_DIR%
rem 如果当前目录的bin子目录下发现catalina.bat文件,程序转到okHome行继续 rem 否则执行下一行“cd..”。 Rem 因为缺省情况下当前目录就是bin目录,所以缺省情况下程序不转入okHome行 if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHome
rem 回上层目录 cd ..
rem 把当前目录的上层目录作为字符串赋给再次CATALINA_HOME变量,覆盖第一次的赋值 set CATALINA_HOME=%cd%
rem 重新回到当前目录 cd %CURRENT_DIR%
:gotHome
rem 如果在当前目录的父目录的bin子文件夹下发现catalina.bat文件,程序转到okHome行继续 rem 否则程序打印两行错误信息,然后退出 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 设置一个变量,存储catalina.bat的完整路径 set EXECUTABLE=%CATALINA_HOME%/bin/catalina.bat
rem 再次检查catalina.bat是否存在,如果不存在,打印两行错误信息,退出 rem Check that target executable exists if exist "%EXECUTABLE%" goto okExec echo Cannot find %EXECUTABLE% echo This file is needed to run this program goto end :okExec
rem 检查脚本是否带参数,如果发现参数,把第一个参数赋值给 CMD_LINE_ARGS变量 rem 如果脚本带有多个参数,程序设置了一个循环setArgs, rem 不断把所带的参数加到CMD_LINE_ARGS变量中 rem Get remaining unshifted command line arguments and save them in the set CMD_LINE_ARGS= :setArgs if ""%1""=="""" goto doneSetArgs set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 shift goto setArgs :doneSetArgs
rem 执行catalina.bat脚本,该脚本的第一个参数为start,后面的参数是从本脚本中传入的 call "%EXECUTABLE%" start %CMD_LINE_ARGS%
C:/carl>startup CATALINA_HOME C:/ The CATALINA_HOME environment variable is not defined correctly This environment variable is needed to run this program
set JAVA_HOME=C:/Program Files/Java/jdk1.5.0_09 set CATALINA_HOME=C:/carl/it/tomcat_research/jakarta-tomcat-5.0.28 call %CATALINA_HOME%/bin/startup.bat