手工把Tomcat安装为Windows服务,并且设置自定义参数

转自:http://sheng.iteye.com/blog/387647

近日,需要把一个Tomcat安装为Windows服务,安装很简单,只要执行一下 bin/service.bat install 即可,但是Tomcat上布署的应用启动时就需要连接MySQL数据库,所以Tomcat服务依赖MySQL服务,如何能让手工安装的Tomcat服务设置一个依赖服务。查了一些资料,发现Tomcat5.exe 和 Tomcat5w.exe 有一些参数可以设置服务参数。

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文件

打开bin/service.bat文件,在

一句后面加上 –DependsOn mysql5.1.32
再执行bin/service.bat,即可安装Tomcat服务,并且依赖MySQL5.1.32

eclipse远程debug部署在tomcat上的应用

转自:http://blog.sina.com.cn/s/blog_50197c290100gbop.html

配置tomcat的JPDA参数:
如果Tomcat使用的是JDK 1.5以上版本,那么JPDA可以使用JVMDI,配置方法为:
在tomcat的bin/catalina.bat文件中一开始加入:

如果是Mac OS X或是Linux,则在bin/catalina.sh文件中一开始加入:

其中address中的端口不一定非用8000哦,也可以换成其他端口。
如果使用的是JDK 1.4,那么只能使用JVMPI了,见后面的说明。
实际debug
配置好JPDA参数后,按以下顺序即可debug了:
1)先以Debug模式启动tomcat;
即:在命令行下,进入tomcat的bin目录,执行catalina jpda start(会打开新窗口)或者catalina jpda run命令(在当前窗口,和catalina run类似);
2)再在eclipse中运行相应的Remote Java Application;
第一次运行时,需要先建立这个Remote Java Application. 方法为打开”Debug”->”Open Debug Dialog”,新建一个Remote Java Application, 给个合适的名字,Connection Type选择”Standard(Socket Attach)”, Host和端口指定为localhost:8000(和上面tomcat中配置的端口一致),如下图示:

3)根据需要在java/jsp中设置断点,跟踪调试了;(和您熟悉的MyEclipse下一样)
说明:
1)以上方法在Windows/Mac OS X,Tomcat 5.5.25下均测试通过;Tomcat 5.0.x和6.0.x则参见4楼
2)如果是JDK 1.4,JPDA参数需要调整为

不过没试过,可能个别参数还需要再调整一下;(建议用JDK 1.5,因为JVMDI比JVMPI强大很多)
3)JPDA的相关参数说明见 http://java.sun.com/j2se/1.5.0/docs/guide/jpda/conninv.html
4)debug并不是诊断和解决问题的唯一方法,很多时候分析运行日志能更快地发现原因和解决问题.