将zip版本的tomcat注册为windows系统服务的相关命令

来源:互联网 发布:网络科学原理与应用 编辑:程序博客网 时间:2024/06/05 07:20

    将zip版本的tomcat注册为windows系统服务的相关命令
    免安装版本的tomcat不会将tomcat服务注册为windows系统服务,所以每次要用startup.bat启动服务,并且要在桌面上留下一个命令界面,用户不小心将命令界面关掉就
会使网站停止,再者黑色的命令框也不美观专业,所以需要将它注册为windwos后台服务并随系统自动启动。具体方法步骤如下:
  
    (1)先说说Tomcat5.exe和Tomcat5w是干什么的。
  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 JAVA_HOME 定义了JAVA_HOME环境变量时,设置一个不同的JAVA_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文件名
  安装服务
  手动安装服务最安全的方法就是使用service.bat脚本。
  使用service.bat安装名字为'Tomcat5'的服务
  C:/> service.bat install Tomcat5
  如果使用tomcat5.exe安装名字为'Tomcat5'的服务,你需要使用//IS//参数。
  C:/> tomcat5 //IS//Tomcat5 --DisplayName="Apache Tomcat 5" --Install="C:/Program Files/Tomcat/bin/tomcat5.exe" --Jvm=auto --StartMode=jvm --StopMode=jvm --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop
  更新服务
  要更新服务的参数,你需要使用tomcat5.exe的//US//参数。
  更新名字为'Tomcat5的服务
  C:/> tomcat5 //US//Tomcat5 --Description="Apache Tomcat Server - http://jakarta.apache.org/tomcat " --Startup=auto --Classpath=%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/bin/bootstrap.jar
  移除服务
  要移除服务,你需要使用tomcat5.exe的//DS//参数。如果服务正在运行,将首先关闭然后删除。
  移除名字为'Tomcat5'的服务
  C:/> tomcat5 //DS//Tomcat5
  调试服务
  如果需要在控制台模式运行服务,应该使用//TS//参数。此时若要关闭服务必须使用CTRL+C 或者 CTRL+BREAK关闭控制台。如果你将tomcat5.exe 更名为 testservice.exe那么你应该运行testservice.exe,命令模式将被缺省运行。
  在控制台模式下运行命称为'Tomcat5' 的服务
  C:/> tomcat5 //TS//Tomcat5 [additional arguments]
  或者简单地运行:
  C:/> tomcat5

    将zip版本的tomcat注册为windows系统服务的相关错误的解决
   错误1:tomcat服务启动到一半自动停止,windows日志报如下错误:Apache Tomcat 服务因 0 (0x0) 服务性错误而停止。
          tomcat 日志报错如下:
[364  javajni.c] [error] Unsuported JNI version 65537
[2008-01-04 16:30:32]
[770  prunsrv.c] [error] Failed initializing java C:/Program Files/jakarta-tomcat-5.0.27/bin/bootstrap.jar
[982  prunsrv.c] [error] ServiceStart returned 2

但是如果用startup.bat启动一切正常,在这种情况下,我们不应当盲目重装jdk 和 tomcat 因为这两个程序没有问题,而根本原因在于注册为后台服务后,启动后台服务时寻找”java 运行时环境“的方法与通过startup.bat的寻找jre的方法是不同的。
前者主要是通过注册表寻找,而后者通过环境变量寻找。如果在你的机器上装有不同版本的jre,比如有1.1,1.3,1.5,那么用后者就可以正确找到1.5版的jre,从而可以正确运行服务。但是前者会从注册表中的
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment 下的CurrentVersion 项中读取当前使用的jre版本,然后使用相应的jre。在这种前提下,如果你很不幸在机器上刚好装有oracle8或者jdk1.2,那么CurrentVersion 项就为1.1或1.2
,所以你tomcat启动的时候就死活不安你的环境变量去找jre,因此就出现了上述错误。解决方法很简单,那就是把CurrentVersion改成1.5就行了。但是我要告诉大家出现“:Apache Tomcat 服务因 0 (0x0) 服务性错误而停止”的现象的原因很多,这只是
其中一个原因,它的标志是用startup.bat可以启动,但是用service.bat install Tomcat5注册为后台服务后就不行了,那么如果出现这种症状,那么用上述方法对症下药,一秒种就搞定了。

错误2:同上述错误的提的一致,但用的是jdk6

      错误日志:无法启动Apache Tomcat服务,系统日志提示:Apache Tomcat 服务因 0 (0x0) 服务性错误而停止。

Apache日志提示:

[173  javajni.c] [error] 找不到指定的模块。
[924  prunsrv.c] [error] Failed creating java ***jvm.dll
[1179 prunsrv.c] [error] ServiceStart returned 1

解决方法:

把msvcr71.dll文件拷贝到C:/windows/system32下面