JAVA中定时自动完成任务的实现要用到JAVA中的定时器TimerTask和监听器听起来貌似有点困难但是实现起来还是比较容易的!纸老虎~~!
下面的列子很详细是关于定时向服务器上传(也可以是其他的动作这是看需要关于上传我博客有写过可以参考)文件的列子简单的步就可以实现
首先创建动作bean
package comsuntime;
public class UploadFile{
/**
*实现上传的代码s省略 可以看下我下面的篇日志
__haiming/blog/static// 使用smarupload 实现上传下载[有例子]
__haiming/blog/static// 使用Struts多文件上传
*/
public void upload()
{
Systemoutprintln(系统自动的上传文件了);
}
}
创建定时器MyTaker并完成相应的功能
package comsuntime;
import javautilCalendar;
import javautilTimerTask;
import javaxservletServletContext;
public class MyTaker extends TimerTask {
private static boolean isRun = false;
private ServletContext context ;
private Calendar ca = CalendargetInstance();
public MyTaker(ServletContext context)
{
ntext = context;
}
@Override
public void run() {
if(!isRun){
if(==caget(CalendarMINUTE)){
isRun = true;
contextlog(正在执行所加载的任务);
UploadFile uf= new UploadFile();
ufupload();
isRun =false;
contextlog(任务顺利完成);
}
}
else
{
Systemoutprintln(任务还没有执行完毕);
}
}
}
创建监听器ContextListener
package comsuntime;
import javaxservletServletContextEvent;
import javaxservletServletContextListener;
import comsuntimeMyTaker;
import javautil*;
public class ContexListener implements ServletContextListener{
private Timer timer = null;
@Override
public void contextDestroyed(ServletContextEvent event) {
timercancel();
eventgetServletContext()log(任务列表已经销毁了);
}
@Override
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
eventgetServletContext()log(服务器已经启动了);
timerschedule(new MyTaker(eventgetServletContext()) );///每隔多长时间检查扫描一次
eventgetServletContext()log(已经加载了任务的列表);
}
}
最后一步就是在webxml中配置监听
<! Java定时器 >
<listener>
<listenerclass>comsuntimeContexListener</listenerclass>
</listener>