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
的执行计划中,每天定时执行该脚本。嘿嘿,解决了,不用再被客户投诉了。