日期:2014-05-17  浏览次数:20874 次

将多个Tomcat实例应用转为Windows服务
有使用过Tomcat经验的朋友看到这个标题,就会产生疑问,安装Tomcat后,不就有一个Tomcat服务安装了吗?是的,没错,但不知道你是 否将N个应用都用一个Tomcat实例来服务呢?这样的弊端是明显的,某个应用出现问题,需要重新启动Tomcat服务,那势必会影响其他正常运行的N- 1个服务,这样的效果显然不尽人意。理想的情况是一个Tomcat实例对应一个应用,并且每个Tomcat实例都是Windows服务,让Windows 服务控制台来对不同的应用单独进行启动与关闭。

那要怎么做呢?

首先是实现一个Tomcat程序上,运行N个Tomcat实例,然后每个Tomcat实例对应一个应用。
1.解压Tomcat压缩包(非Tomcat安装版),在%Tomcat%目录下会有bin,common,conf,logs,server,shared,tmp,webapps,work等文件夹与文件,我统称这些为Tomcat程序。

2.创建应用名称为PROJECT[X]的文件夹(非%Tomcat%下),将%Tomcat%文件夹下的conf,logs,tmp,work文件夹拷贝到%PROJECT[X]%目录下。

注:我现在用[X]代替,[X]可以是0-9的数字

3.修改%PROJECT[X]%/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,PROJECT1对应8105,8180,8109,PROJECT2对应8205,8280,8209,以此类推。

4.现在启动Tomcat实例,在%PROJECT[X]%目录下创建startup.bat脚本,代码如下:
set JAVA_HOME=D:\JDK
set CATALINA_BASE=D:\PROJECT[X]
set CATALINA_HOME=D:\TOMCAT
%CATALINA_HOME%\bin\catalina start

5.启动各自%PROJECT[X]%的startup.bat,各自独立的Tomcat实例就启动了。

那为什么我会想要将这些各自的Tomcat实例转成Windows服务呢?原因有三点:
1.多个Tomcat实例启动会有多个Tomcat的SHELL在运行,一个字-丑
2.通常WEB服务器都需要远程登录,如果使用startup.bat脚本启动的方式,那管理员将不能使用注销,而只能关闭远程连接,这样做的后果是服务器会提示“超出最大连接数”的错误,只能乖乖的请求托管商重新启动服务器,一个字-烦
3.将Tomcat实例转成Windows服务,可以让应用在系统启动时候一起启动,而不需要手动去启动每个Tomcat实例

其实将Tomcat实例转成Windows服务也是很简单的事情,只需要运行下面脚本
set JAVA_HOME=D:\JDK
set CATALINA_BASE=D:\PROJECT[X]
set CATALINA_HOME=D:\TOMCAT
%CATALINA_HOME%\bin\service.bat install “PROJECT[X]”

运行脚本后,Windows服务控制台将多了如Apache Tomcat “PROJECT[X]”服务。