Tomcat启动指定的Web工程
1. 最近碰到这样一个问题:项目使用到了报表,上线后,客户投诉报表经常每隔一段时间,就不能用了。后来我们发现只要将Tomcat重新启动下就没有问题了,应该是那个报表工具的性能不是很稳定造成的,大概每隔一个星期需要重启一次。
当然不能每次出问题就人工去重启,这样对客户、对我们来说都是不能长期接受的,所以这个问题得解决。
首先,将报表输出单独作为一个小的工程拿出来,这样即使报表出问题了,可以登陆到Tomcat的后台管理程序中,去只对这个报表工程重新reload一下,而不需要对整个项目重新启动,这样就可以减少对客户正常工作的影响
这样看似已经解决了问题,但是肯定还是要被客户投诉,因为我们不可能每天盯着报表工程,肯定是客户先来发现报表出问题,然后找我们,长期下去也不行。
接着,我们想,怎样写一个脚本,让Tomcat每天晚上(客户睡觉时,嘿嘿),去自动重启这个报表工程,于是查看Tomcat的管理文档,在5)Manager这部分的最下面,找到了解决问题的方案:
- 写一个可以重新启动报表工程的脚本
<?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目录下
- 编写一个bat脚本,去执行ant,
ant reload
- 并将这个bat脚本放到windows的执行计划中,每天定时执行该脚本。嘿嘿,解决了,不用再被客户投诉了。