zoukankan      html  css  js  c++  java
  • EJBTimer 使用EJB提供的定时器

    一、说明

    EJB提供的定时器有两种,自动定时器和自定义定时器,自动定时器设置使用简单但是扩展较为麻烦,自定义定时器有较好的扩展性。

    下面的例子中是把两中方式放到了一个测试类中。

    二、示例

    import java.io.Serializable;
    import java.util.Collection;
    import java.util.Date;
    import javax.annotation.Resource;
    import javax.ejb.Schedule;
    import javax.ejb.Singleton;
    import javax.ejb.Startup;
    import javax.ejb.Timeout;
    import javax.ejb.Timer;
    import javax.ejb.TimerService;
    @Startup
    @Singleton
    public class TimerServiceBean {
        @Resource
        private TimerService timerServie;
        private int num;
    
        // 设置自定义定时器的方法,需要客户端调用
        public void setTimer(long outTime) {
            timerServie.createTimer(new Date(new Date().getTime() + outTime), outTime, "testTimer");
        }
    
        // 自定义定时器超时执行的方法
        @Timeout
        public void TimeOutAction(Timer timer) {
            System.out.println("=====Timeout " + num + " success!");
            num++;
            if (num == 10) {
                Collection<Timer> timers = timerServie.getTimers();
                for (Timer t : timers) {
                    Serializable info = t.getInfo();
                    if ("testTimer".equals(info)) {
                        t.cancel();
                    }
                }
                num = 0;
            }
        }
    
        // 自动定时器配置极其超时执行方法
        @Schedule(persistent = true, minute = "*", second = "*/5", hour = "*")
        public void autoTimer() {
            System.out.println("====Auto Timer working");
        }
    }


  • 相关阅读:
    assert出问题了?
    UIWebView 禁止检测链接弹出UIActionSheet
    UIWebView 禁止检测链接弹出UIActionSheet
    Linux命令行下常用svn命令
    Linux命令行下常用svn命令
    续上文,Unity3D面试ABC
    续上文,Unity3D面试ABC
    部署 H3C CAS E0306
    部署 H3C CAS E0306
    H3C CAS 介绍 & 基本概念
  • 原文地址:https://www.cnblogs.com/riskyer/p/3297276.html
Copyright © 2011-2022 走看看