Java定时器在JavaWeb中的整合启动

2 篇文章 0 订阅
1 篇文章 0 订阅
                    **javaweb项目启动时设置定时器并每隔固定时间执行对应代码**
   javaweb项目中使用定时器可以定期清理缓存,也可以是定期执行部分代码片段。这个定时器在普通项目中我们很容器就实现了,因为它执行的是阻塞式的方法。
   这里我们这样写:
package com.gps.app.listener;

import java.util.Timer;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.gps.app.timer.MyTask;

public class ContextListener implements ServletContextListener {

    private Timer timer = null;

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        if(null!=timer)timer.close;
    }

    /**
     * 这里是在web项目启动的时候执行的监听器执行的初始化方法。
     */
    @Override
    public void contextInitialized(ServletContextEvent event) {
        ServletContext context = event.getServletContext();
        timer = new  Timer(true);
        context.log("定时器启动了");
        timer.schedule(new MyTask(event.getServletContext()), 0 , 5000);
        context.log("定时器执行完一次");
    }
}
在上述的监听器相关代码实现编码之后,我们就可以对我们的定时器进行code,让这宿主为ServeletContext的Timer有生命的价值。下面是我们的定时器部分的代码:

package com.gps.app.timer;

import java.util.List;
import java.util.TimerTask;

import javax.servlet.ServletContext;

import SocketServers.delData.SpringFactory;

import com.gps.entity.TxData;
import com.gps.service.TxDataService;

public class MyTask extends TimerTask {
/**
* 这块存在的主要目的是为了调用ServeletContext的log(“message”)方法
*/
private ServletContext servletContext;
/**
* tx设备表格相关的服务
*/
private static TxDataService txDataService;

public MyTask() {
    super();
}

public MyTask(ServletContext servletContext) {
    super();
    this.servletContext = servletContext;
}

@Override
public void run() {
    if(txDataService == null){
        txDataService = SpringFactory.getBean("txDataService");
    }
    List<TxData> txDatas = txDataService.getTxDatasByImei("imei10001");
    for(TxData txData:txDatas){
        System.out.println(txData);
    }
}

}

上面的springFactory是在项目启动时加载的一个工厂主要是获取没有加注解的service对象,所以这块的话我们使用它来完成对数据库的操作。具体实现方式参照:

spring启动时加载数据库中的数据

last but not least
我们最后一步关键的步骤是把上面的监听器配置到我们的web项目中去:

这里写图片描述
项目挂载之后可以启动了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值