将多个Tomcat实例应用转为Windows服务
1、 为什么要将多个Tomcat实例应用转为Windows服务
a、多个Tomcat实例启动会有多个Tomcat的SHELL在运行,一个字-丑。
b、通常WEB服务器都需要远程登录,如果使用startup.bat脚本启动的方式,那管理员将不能使用注销,而只能关闭远程连接,这样做的后果是服务器会提示“超出最大连接数”的错误,只能乖乖的请求托管商重新启动服务器,一个字-烦。
c、将Tomcat实例转成Windows服务,可以让应用在系统启动时候一起启动,而不需要手动去启动每个Tomcat实例。
d、若将N个应用都用一个Tomcat实例来服务呢?这样的弊端是明显的,某个应用出现问题,需要重新启动Tomcat服务,那势必会影响其他正常运行的N- 1个服务,这样的效果显然不尽人意。理想的情况是一个Tomcat实例对应一个应用,并且每个Tomcat实例都是Windows服务,让Windows 服务控制台来对不同的应用单独进行启动与关闭。
2、如何实现将多个Tomcat实例应用转为Windows服务
2.1、解压Tomcat压缩包(非安装包)
将压缩包解压到磁盘上,在%Tomcat%目录下会有bin、conf、lib、logs、temp、webapps、work、LICENSE、NOTICE、RELEASE-NOTES、RUNNING.txt等文件,我统称这些为Tomcat程序。
注:建议使用tomcat6.0.20,因为再高一些的版本中可能会缺少service.bat文件。
2.2、创建新应用文件夹
在非%Tomcat%下,创建一个以新应用名为文件名(以project为例)的文件夹。将%Tomcat%文件夹下的conf、logs、temp、work文件夹拷贝到%project%目录下。
2.3、修改%project%/conf/server.xml配置文件
修改该文件中的三个端口:
a、Server port=”8[X]05” shutdown=”SHUTDOWN”
b、Connector port=”8[X]80” maxHttpHeaderSize=”8192” …
c、Connector port=”8[X]09” enableLookups=”false” …
注:Tomcat默认的这三个端口号为8005,8080,8009,
project对应8105,8180,8109
下一个应用对应8205,8280,8209,以此类推。
2.4、启动Tomcat实例
在%project%目录下创建startup.bat脚本,代码如下:
setJAVA_HOME=D:\Program Files\Java\jdk1.6.0_10
setCATALINA_BASE=D:\Program Files\apache\PROJECT1
setCATALINA_HOME=D:\Program Files\apache\apache-tomcat-6.0.20
cd%CATALINA_HOME%\bin\
catalinastart
注:直接写%CATALINA_HOME%\bin\catalinastart,系统会报
'D:\Program'不是内部或外部命令,也不是可运行的程序或批处理文件。
2.5、启动tomcat
启动各个应用的startup.bat,各自独立的Tomcat实力就启动了。
2.6、将Tomcat实例转成Windows服务
2.6.1、在%project%目录下创建service.bat脚本,代码如下:
setJAVA_HOME=D:\Program Files\Java\jdk1.6.0_10
setCATALINA_BASE=D:\Program Files\apache\PROJECT1
setCATALINA_HOME=D:\Program Files\apache\apache-tomcat-6.0.20
cd%CATALINA_HOME%\bin\
service.batinstall PROJECT1
2.6.2、修改%tomcat%\bin\service.bat文件中的SERVICE_NAME和PR_DISPLAYNAME,代码如下:
setSERVICE_NAME=Apache tomcat project
setPR_DISPLAYNAME=Apache tomcat project
注:
a、如果系统报CATALINA_HOME配置错误,则可能是由于在系统的环境变量中已经配置了CATALINA_HOME变量,这时只需要把%project%目录下service.bat脚本中的
setCATALINA_HOME=D:\Program Files\apache\apache-tomcat-6.0.20
cd%CATALINA_HOME%\bin\
修改为
cdD:\Program Files\apache\apache-tomcat-6.0.20\bin
就可以了。
b、如果系统报nonalpha 45错误,则可能是由于service.bat install a-b 这条命令的问题在于,tomcat 的服务名不能有“-”!
c、如果系统报nonalpha 95错误,则可能是由于%tomcat%\bin\service.bat中Tomcat的服务名称写成了 "Tomcat_1“,而Windows2003操作系统的服务名称中不能出现下划线"_" !
d、如果系统报nonalpha 8220错误,则可能是由于由于%tomcat%\bin\service.bat中Tomcat的服务名没有修改。
备注:按照上面的步骤和系统报错相对应的解决方案,我在win7操作系统上实现了将多个Tomcat实例应用转为Windows服务,大家在不同的操作系统上边实现该功能时可能会出现类似的系统报错,希望大家灵活应变,早点解决问题。
引文
[1] 将多个Tomcat范例应用转为Windows服务http://www.myexception.cn/windows/445984.html