henry1451 的专栏
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 60,comments - 71,trackbacks - 0
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(6)
给我留言
查看公开留言
查看私人留言
我参与的团队
架构师之家(0/0)
随笔档案
2009年9月 (1)
2009年6月 (1)
2009年5月 (2)
2009年4月 (3)
2009年3月 (2)
2009年1月 (1)
2008年12月 (3)
2008年11月 (2)
2008年10月 (3)
2008年9月 (7)
2008年8月 (9)
2008年7月 (23)
2008年6月 (1)
2008年5月 (2)
文章分类
Hibernate技术(5)
Java技术(15)
Jsp,Js,Ajax,Html技术(8)
Linux技术(2)
Oracle技术(9)
Spring技术
Struts,Webwork,Xwork技术(3)
其他相关(1)
开源技术(7)
文章档案
2008年6月 (27)
2008年5月 (27)
2008年4月 (3)
博客集锦
hk2000c技术专栏
即兴的灵感
和风细雨
小方的Java博客
小飞龙
急死我了
每日一得
资源与技术网站
BlogJava热点分类
BlogJava随笔
JavaEye
J道
Matrix
Open-open
SourceForge
搜索
最新评论
1. re: 关于关闭Connection是否会自动关闭Statement,ResultSet问题
谢了, 很受用!
--码农C
2. re: ClientAbortException 异常解决办法
换浏览器后可以了
--换浏览器后可以了
3. re: eclipse 下环境变量设置[未登录]
请问 MAVEN_REPO在哪定义的?
--a
4. re: 图形统计工具amCharts体验
无语
--EE
5. re: ClientAbortException 异常解决办法
。。。。。。。
--q
阅读排行榜
1. ClientAbortException 异常解决办法(14156)
2. Eclipse下安装TomcatPlugin插件(8429)
3. 图形统计工具amCharts体验(6254)
4. PL/pgSQL - SQL过程语言(转)(5570)
5. 如何修改存储过程(4481)
评论排行榜
1. 取得单选按钮中显示的内容(9)
2. ClientAbortException 异常解决办法(7)
3. 图形统计工具amCharts体验(4)
4. 10.1快乐!(4)
5. 重复提交、重复刷新、防止后退的问题以及处理方式(转)(4)
利用ServletContextListener实现定时任务(l转)
一个WEB应用程序下的定时任务,觉得写的比较全,所以转了一下.
一个实现ServletContextListener接口的类: StatisticsContextListener.java
package
com.ed.cnc.servletListener;
import
javax.servlet.ServletContextEvent;
import
javax.servlet.ServletContextListener;
import
com.ed.cnc.city.StatisticsTask;
/** */
/**
* 统计ContextListener
*
@author
westd
*
*/
/** */
/**
*
@author
westd
*
*/
public
class
StatisticsContextListener
implements
ServletContextListener
{
private
java.util.Timer timer
=
null
;
/** */
/**
* 这个方法在Web应用服务做好接受请求的时候被调用。
*
*
@see
javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
public
void
contextInitialized(ServletContextEvent event)
{
timer
=
new
java.util.Timer(
true
);
event.getServletContext().log(
"
定时器已启动
"
);
timer.schedule(
new
StatisticsTask(event.getServletContext()),
0
,
60
*
60
*
1000
);
//
每隔1小时
event.getServletContext().log(
"
已经添加任务调度表
"
);
}
/** */
/**
* 这个方法在Web应用服务被移除,没有能力再接受请求的时候被调用。
*
*
@see
javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
public
void
contextDestroyed(ServletContextEvent event)
{
timer.cancel();
event.getServletContext().log(
"
定时器销毁
"
);
}
}
一个继承于TimerTask的一个类:StatisticsTask.java
package
com.ed.cnc.city;
import
java.util.Calendar;
import
java.util.TimerTask;
import
javax.servlet.ServletContext;
/** */
/**
* 统计任务
*
@author
westd
*
*/
public
class
StatisticsTask
extends
TimerTask
{
private
static
final
int
STATISTICS_SCHEDULE_HOUR
=
0
;
private
static
boolean
isRunning
=
false
;
private
ServletContext context
=
null
;
public
StatisticsTask(ServletContext context)
{
this
.context
=
context;
}
@Override
public
void
run()
{
Calendar cal
=
Calendar.getInstance();
//
System.out.println(isRunning);
if
(
!
isRunning)
{
if
(STATISTICS_SCHEDULE_HOUR
==
cal.get(Calendar.HOUR_OF_DAY))
//
查看是否为凌晨
{
isRunning
=
true
;
context.log(
"
开始执行指定任务
"
);
//
TODO 添加自定义的详细任务
executeTask();
//
指定任务执行结束
isRunning
=
false
;
context.log(
"
指定任务执行结束
"
);
}
}
else
{
context.log(
"
上一次任务执行还未结束
"
);
}
}
/** */
/**
* 执行任务
*/
public
void
executeTask()
{
System.out.println(
"
任务1
"
);
System.out.println(
"
任务2
"
);
}
}
web.xml中添加如下代码:
<
listener
>
<
listener-class
>
com.ed.cnc.servletListener.StatisticsContextListener
</
listener-class
>
</
listener
>
posted on 2008-07-25 15:48
henry1451
阅读(427)
评论(1)
编辑
收藏
FeedBack:
#
re: 利用ServletContextListener实现定时任务(l转)
2009-01-07 15:06 |
汽车工业滤纸
uijhy
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理