`
wuxiao_v
  • 浏览: 46128 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将多个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]”服务。
分享到:
评论

相关推荐

    myeclipse工程转为eclipse工程,发布到Tocmat服务器

    - 添加服务器后,在"Servers"视图中创建一个新的Tomcat服务器实例,然后将你的工程拖放到服务器上。在部署配置中,确保项目的上下文根(Context Root)与预期一致。 7. **启动调试**: - 右键点击服务器,选择...

    Servlet是线程不安全的1

    当客户端发来多个请求的时候,Servlet将采用多线程来解决这样的并发,而在Tomcat本身也维护了一个线程池来处理并发。线程池实际上是等待执行代码的一组线程叫做工作组线程(Worker Thread),Tomcat容器使用一个调度...

    一个完整的新闻发布系统

    在构建一个完整的新闻发布系统时,我们需要考虑多个关键组件和技术。这个系统主要基于Java技术栈,利用JSP(JavaServer Pages)作为前端展示层,J2SE(Java Standard Edition)5.0作为后端开发环境,以及Tomcat ...

    大公司java面试题

    使用String的getBytes()和new String(byte[], charset)方法进行编码转换,例如将GB2312转为ISO-8859-1。 【访问数据库】 Statement用于执行静态SQL,PreparedStatement用于预编译SQL,能防止SQL注入,提高性能。 ...

    SERVLET实现下载

    综上所述,通过Servlet实现文件下载功能涉及到设置响应头、读取文件内容、处理中文文件名等多个步骤。结合JSP页面,可以方便地为用户提供下载服务。同时,还需要考虑安全性与性能优化,确保服务的稳定性和效率。

    Excel数据操纵-jar包-jxl.jar

    我相信在配置TOMCAT时也需要把相关的三个包放到这里面。)  基本操作  一、创建文件  拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:  代码(CreateXLS....

    通过java操作excel表格的工具类库jxl

    我相信在配置TOMCAT时也需要把相关的三个包放到这里面。  基本操作  一、创建文件  拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:  代码(CreateXLS.java)...

    java面试题

    String是一个对象,不属于基本数据类型,它是类String的实例。 - 基本类型和引用类型的差异主要在于存储方式和内存管理。基本类型直接存储值,而引用类型存储的是对象的地址。 2. **字符串操作** - 字符串反转可...

Global site tag (gtag.js) - Google Analytics