最近做了一个项目需要将tomcat和产品功能共同打包进行安装,设计方案是将tomcat用打包工具(我用的是wise)进行拷贝,然后再通过执行相关命令进行服务安装,具体如下(做成批处理文件假设为Installtomcat.bat): @echo off if "%OS%" == "Windows_NT" setlocal rem --------------------------------------------------------------------------- rem NT Service Install/Uninstall script rem rem Options rem install Install the service using Tomcat5 as service name. rem Service is installed using default settings. rem remove Remove the service from the System. rem rem name (optional) If the second argument is present it is considered rem to be new service name rem rem $Id: service.bat,v 1.5.2.2 2004/09/05 07:57:57 mturk Exp $ rem --------------------------------------------------------------------------- rem Guess CATALINA_HOME if not defined set CURRENT_DIR=%cd% if not "%CATALINA_HOME%" == "" goto gotHome set CATALINA_HOME=%cd% if exist "%CATALINA_HOME%\bin\tomcat5.exe" goto okHome rem CD to the upper dir cd .. set CATALINA_HOME=%cd% :gotHome if exist "%CATALINA_HOME%\bin\tomcat5.exe" goto okHome echo The tomcat.exe was not found... echo The CATALINA_HOME environment variable is not defined correctly. echo This environment variable is needed to run this program goto end rem Make sure prerequisite environment variables are set if not "%J***A_HOME%" == "" goto okHome echo The J***A_HOME environment variable is not defined echo This environment variable is needed to run this program goto end :okHome if not "%CATALINA_BASE%" == "" goto gotBase set CATALINA_BASE=%CATALINA_HOME% :gotBase set EXECUTABLE=%CATALINA_HOME%\bin\tomcat5.exe rem Set default Service name set SERVICE_NAME=Tomcat5 set PR_DISPLAYNAME=Apache Tomcat if "%1" == "" goto displayUsage if "%2" == "" goto setServiceName set SERVICE_NAME=%2 set PR_DISPLAYNAME=Apache Tomcat %2 :setServiceName if %1 == install goto doInstall if %1 == remove goto doRemove echo Unknown parameter "%1" :displayUsage echo echo Usage: service.bat install/remove [service_name] goto end :doRemove rem Remove the service "%EXECUTABLE%" //DS//%SERVICE_NAME% echo The service '%SERVICE_NAME%' has been removed goto end :doInstall rem Install the service echo Installing the service '%SERVICE_NAME%' ... echo Using CATALINA_HOME: %CATALINA_HOME% echo Using J***A_HOME: %J***A_HOME% rem Use the environment variables as an exaple rem Each command line option is prefixed with PR_ set PR_DESCRIPTION=Apache Tomcat Server - http://jakarta.apache.org/tomcat set PR_INSTALL=%EXECUTABLE% set PR_LOGPATH=%CATALINA_HOME%\logs set PR_CLASSPATH=%J***A_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar rem Set the server jvm from J***A_HOME set PR_JVM=%J***A_HOME%\jre\bin\server\jvm.dll if exist "%PR_JVM%" goto foundJvm rem Set the client jvm from J***A_HOME set PR_JVM=%J***A_HOME%\jre\bin\client\jvm.dll if exist "%PR_JVM%" goto foundJvm set PR_JVM=auto :foundJvm echo Using JVM: %PR_JVM% "%EXECUTABLE%" //IS//%SERVICE_NAME% --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop if not errorlevel 1 goto installed echo Failed installing '%SERVICE_NAME%' service goto end :installed rem Clear the environment variables. They are not needed any more. set PR_DISPLAYNAME= set PR_DESCRIPTION= set PR_INSTALL= set PR_LOGPATH= set PR_CLASSPATH= set PR_JVM= rem Set extra parameters "%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions "-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed; --StartMode jvm --StopMode jvm rem More extra parameters set PR_STDOUTPUT=%CATALINA_HOME%\logs\stdout.log set PR_STDERROR=%CATALINA_HOME%\logs\stderr.log "%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp" --JvmMs 128 --JvmMx 256 echo The service '%SERVICE_NAME%' has been installed. :end cd %CURRENT_DIR% 如果你的系统中配置了启动参数,可通过以上命令进行修改,通过启动tomcat服务进行自动加载。 安装服务:installtomcat.bat install 卸载服务:installtomcat.bat remove tomcat为5.0,jdk为1.5,前提必须是java可用,测试通过。 附tomcat命令集合说明: Tomcat5.exe可以把Tomcat加入服务;Tomcat5w.exe可以辅助配置已经添加的服务。 Tomcat5w.exe 监控程序 Tomcat5w是一个监控和配置Tomcat服务的图形界面应用程序。可用的命令行选项如下: //ES// 编辑服务配置,这是缺省的选项。如果没有提供任何选项,却把tomcat5w.exe重命名为%SERVICE_NAME%.exe运行的话,这个选项就被调用。 //MS// 监控服务,讲图标放置到系统托盘中。 Tomcat5.exe 服务程序 命令行选项 每一个命令行指令都形如//XX//ServiceName 可用的命令行选项如下: The ServiceName is the name of the executable without exe sufix, meaning Tomcat5 //TS// 控制台应用程序模式运行服务,这是缺省的操作。在没有提供任何选项开关的时候,它被调用。服务名是执行文件没有exe后缀的部分,如Tomat5。 //RS// Run Service的缩写,运行服务,在服务管理器(Sevices.msc)中启动服务的时候被调用。 //SS// Stop Service的缩写,停止服务,在服务管理器中停止服务时被调用。 //US// Update Service的缩写,更新服务参数。 //IS// Install service 的缩写,安装服务 。 //DS// Delete service的缩写,删除服务,如果服务正在运行,首先删除服务。 命令行参数 每一个命令行参数以“--”开头。如果命令行以“++”为前缀,则它的值附加到存在的选项上。如果存在和命令行参数有同样的名字,但是以PR_开头的环境变量,它将被优先使用。例如: set PR_CLASSPATH=xx.jar 等同于 --Classpath=xx.jar 作为命令行参数。 参数名 缺省值 描述 --Description 服务名描述 (最多1024个字符) --DisplayName ServiceName 服务显示名称 --Install procrun.exe //RS//ServiceName 安装服务 --Startup manual Service 服务启动模式,可以是自动或者手动,值分别为:auto和manual --DependsOn 列举此服务依赖的所有服务. 被依赖的服务用#或者;分隔。 --Environment 列决提供给服务使用的环境变量,形如key=value。多个环境变量之间用#或者;分隔。 --User 运行服务使用的用户账号。 只有在运行于没有“作为服务登录”权限下的账户中使用StartMode java 或者作为服务的exe可运行程序选项的情况下才被使用。 --Password --User参数中用户的密码 --JavaHome J***A_HOME 定义了J***A_HOME环境变量时,设置一个不同的J***A_HOME环境变量 --Jvm auto 用auto或指定jvm.dll的全路径。这里可以使用环境变量表达式。 --JvmOptions -Xrs 列举形如-D 或 -X 的开关传递给JVM虚拟机。多个选项开关之间用#或者;分隔。 --Classpath 设置Java的ClassPath环境变量。 --JvmMs 设置初始使用的内存池容量,单位为MB。 --JvmMx 设置最大使用的内存池容量,单位为MB。 --JvmSs 线程堆栈容量,单位为KB --StartImage 要被运行的可执行文件 --StartPath 开始运行可执行文件的工作路径 --StartClass 启动时使用的类 --StartParams 列决要传递给StartImage 或 StartClass的参数。多个参数之间用#或者;分隔。 --StartMethod Main 启动服务调用的方法,如果不是main,这里写上方法名 --StartMode executable 可以是jvm、java或exe 之一 --StopImage 停止服务调用的可执行文件 --StopPath 停止服务执行的文件的工作路径 --StopClass 停止服务调用的类 --StopParams 列决要传递给 StopImage 或 StopClass 的参数。多个参数之间用#或者;分隔。 --StopMethod Main 停止服务调用的方法,如果不是main,这里写上方法名 --StopMode executable 可以是jvm、java或exe 之一 --StopTimeout No Timeout 定义一个服务顺利退出的延时,单位为秒。 --LogPath 定义日志路径 --LogPrefix jakarta_service 定义日志文件名前缀 --LogLevel INFO 定义日志等级,可选值:error, info, warn或debug --StdOutput 重定向stdout文件名 --StdError 重定向Stderr文件名 |