Tomcat启动指定的Web工程

1.     最近碰到这样一个问题:项目使用到了报表,上线后,客户投诉报表经常每隔一段时间,就不能用了。后来我们发现只要将Tomcat重新启动下就没有问题了,应该是那个报表工具的性能不是很稳定造成的,大概每隔一个星期需要重启一次。

当然不能每次出问题就人工去重启,这样对客户、对我们来说都是不能长期接受的,所以这个问题得解决。

首先,将报表输出单独作为一个小的工程拿出来,这样即使报表出问题了,可以登陆到Tomcat的后台管理程序中,去只对这个报表工程重新reload一下,而不需要对整个项目重新启动,这样就可以减少对客户正常工作的影响

这样看似已经解决了问题,但是肯定还是要被客户投诉,因为我们不可能每天盯着报表工程,肯定是客户先来发现报表出问题,然后找我们,长期下去也不行。

接着,我们想,怎样写一个脚本,让Tomcat每天晚上(客户睡觉时,嘿嘿),去自动重启这个报表工程,于是查看Tomcat的管理文档,在5)Manager这部分的最下面,找到了解决问题的方案:

  1. 写一个可以重新启动报表工程的脚本

<?xml version="1.0" encoding="UTF-8"?>

<project name="Gentle Application" default="reload" basedir=".">

 

    <!-- 需要管理的Web工程名 -->

    <property name="path" value="/EuropeReport" />

    <!-- Tomcat管理控制台的URL -->

    <property name="url" value="http://localhost:8088/manager" />

    <!-- tomcat管理员的用户名、密码 -->

    <property name="username" value="admin" />

    <property name="password" value="adminadmin" />

 

    <!-- Configure the custom Ant tasks for the Manager application -->

    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" />

    <taskdef name="list" classname="org.apache.catalina.ant.ListTask" />

    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" />

    <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" />

    <taskdef name="roles" classname="org.apache.catalina.ant.RolesTask" />

    <taskdef name="start" classname="org.apache.catalina.ant.StartTask" />

    <taskdef name="stop" classname="org.apache.catalina.ant.StopTask" />

    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" />

    <!-- 停止EuropeReport工程 -->

    <target name="stop" description="stop web application">

       <stop url="${url}" username="${username}" password="${password}" path="${path}" />

    </target>

    <!-- 启动EuropeReport工程 -->

    <target name="start" description="stop web application">

       <start url="${url}" username="${username}" password="${password}" path="${path}" />

    </target>

    <!-- 重新启动EuropeReport工程 -->

    <target name="reload" description="Reload web application">

       <reload url="${url}" username="${username}" password="${password}" path="${path}" />

    </target>

    <!-- 卸载EuropeReport工程 -->

    <target name="undeploy" description="Remove web application">

       <undeploy url="${url}" username="${username}" password="${password}" path="${path}" />

    </target>

</projec

注:需要将%TOMCAT_HOME%\lib\catalina-ant.jar,拷贝到%ANT_HOME%\lib目录下

  1. 编写一个bat脚本,去执行ant

ant  reload

  1. 并将这个bat脚本放到windows的执行计划中,每天定时执行该脚本。嘿嘿,解决了,不用再被客户投诉了。
posted on 2010-01-06 23:47  TroyZ  阅读(2410)  评论(0编辑  收藏  举报