任何jsp/servlet都不应该定时调用
写一个servlet,在web.xml中加入这个servlet,并且<load-on-startup>1</load-on-startup>,但是不对这个servlet加上servlet-mapping(避免能够通过浏览器访问)
在它的init方法中使用Timer来定时执行一个线程
写一个servlet,在web.xml中加入这个servlet,并且<load-on-startup>1</load-on-startup>,但是不对这个servlet加上servlet-mapping(避免能够通过浏览器访问)
在它的init方法中使用Timer来定时执行一个线程
解决方案 »
- 内存溢出,求高手帮忙!
- ibatis异常
- oracle生僻字显示乱码
- 有关JSM的配置问题·····望各位前辈、朋友帮帮忙···
- strtus1.0里的dispathAction,表单提交时,没有跟参数
- ext
- jboss 发布jsp客户端时 发布异常
- struts中想用2个logic:iterator做嵌套循环,为什么总是报Cannot create iterator for this collection?
- Hibernate 如何存取ORACLE 9I 的CLOB字段数据
- 支付宝和微信支付接口怎么用?
- jdbc连接不上oralce数据库,请各位帮忙!
- jboss 可以在windows xp 下跑吗?
关注
是定时调用一个类吧,servlet确实没什么定时的,就是让它sleep
Timer能实现我知道,但是我觉得太麻烦。个人认为servlet服务器都应该有定时执行某个servlet的配置(resin & tomcat都有),所以想求jboss的配置方式,同时顺便求jboss的官方文档。在问一下:为什么任何jsp/servlet都不应该定时调用?
首先web.xml相关项如下:
<servlet>
<servlet-name>TimingServlet</servlet-name>
<servlet-class>com.*****.TimerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
TimerServlet类:
package com.fesc.pubservlet;
/**
* <p>Title:****(V5.0)</p>
* <p>Description:公共的Servlet,定时执行程序,本
* Servlet必须在服务器启动时即被装载,滞留于内存</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ***</p>
* <p>Create Time: 2004-3-27</p>
* @author YanZhijie
* @version 1.0
* <br>
* $Id$
* $Log$
*/
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TimerServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException{
super.init(config);
System.out.println("Init Success!!!!!!!!!!");
WrapperTimer wrapperTimer=new WrapperTimer();
wrapperTimer.scheduleTask();
}
}
TimerServlet类调用得java Timer类:
package com.***;
import java.util.*;
import java.sql.*;
import java.io.*;
import java.text.*;
public class WrapperTimer {
//设定启动时间:24小时制
private int iHour=1,iMinute=0,iSecond=0; //凌晨1点启动
private Timer timer = null;
private TimerTask timerTask = null;
private final static int PERIOD = 1 * 60 * 60 * 1000;
private Calendar cal= Calendar.getInstance();
public WrapperTimer() {
timer = new Timer();
timerTask = new MyTask();
}
public void scheduleTask() {
//Calendar cal = Calendar.getInstance();
cal.getTime();
cal.set(cal.HOUR_OF_DAY,iHour);
cal.set(cal.MINUTE,iMinute);
cal.set(cal.SECOND,iSecond);
timer.schedule(timerTask, cal.getTime(), PERIOD);
}
public void cancel() {
timer.cancel();
}
private class MyTask extends TimerTask {
public void run() {
Calendar curCal=Calendar.getInstance(); //当前时间
if(( curCal.getTime().getHours()==iHour)&&(curCal.getTime().getMinutes()>=iMinute)){
System.out.println("定时程序启动:");
************//调用你要做的动作 System.out.println("定时程序执行完毕!");
}else{
//System.out.println("时间不对");
}
} }
}