Jboss7中ejb3使用@Schedule调度器总是每分钟执行

Jboss7中ejb3使用@Schedule调度器总是每分钟执行

1 问题:当我尝试着去开发一个ejb3的@Schedule调度器来执行我预定每5秒钟执行一次的任务时。我意外的发现无论我怎么设置,该@Schedule以每分钟来运行。

import java.text.SimpleDateFormat;
import java.util.Date;
import javax.ejb.Schedule;
import javax.ejb.Stateless;
/**
 * 845885222@qq.com
 * @author youyou
 */
@Stateless
public class MakeHtmlSchedule {
    @Schedule(second = "*/10", minute = "*", hour = "*", persistent = false)
    public void doWork() {
        Date currentTime = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
        System.out.println("ScheduleExample.doWork() invoked at " + simpleDateFormat.format(currentTime));
    }
}

2 一个定时调度器不一定是@singleton注解的对象,也可以使用@Stateless,甚至使用@Stateful的bean。如果使用的@Stateless或者@Stateful,那么doWork()方法只会是每分钟调用一次。改动为使用@Singleton装饰,就可以实现每10秒运行一次doWork()方法了。

import java.text.SimpleDateFormat;
import java.util.Date;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
/**
 * 845885222@qq.com
 * @author youyou
 */
@Singleton
public class MakeHtmlSchedule {
    @Schedule(second = "*/10", minute = "*", hour = "*", persistent = false)
    public void doWork() {
        Date currentTime = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
        System.out.println("ScheduleExample.doWork() invoked at " + simpleDateFormat.format(currentTime));
    }
}

每10秒钟执行一次的效果:

VEIGHT 2015-01-31 22:59:00,002 INFO (EJB default - 5) ScheduleExample.doWork() invoked at 2015.01.31 公元 at 22:59:00 CST
VEIGHT 2015-01-31 22:59:10,002 INFO (EJB default - 7) ScheduleExample.doWork() invoked at 2015.01.31 公元 at 22:59:10 CST
VEIGHT 2015-01-31 22:59:20,001 INFO (EJB default - 8) ScheduleExample.doWork() invoked at 2015.01.31 公元 at 22:59:20 CST

3 参考链接:http://www.adam-bien.com/roller/abien/entry/simplest_possible_ejb_3_16

				
时间: 2024-09-18 18:22:51

Jboss7中ejb3使用@Schedule调度器总是每分钟执行的相关文章

调度器 Scheduler

调度器 Scheduler 如果你想给Observable操作符链添加多线程功能,你可以指定操作符(或者特定的Observable)在特定的调度器(Scheduler)上执行. 某些ReactiveX的Observable操作符有一些变体,它们可以接受一个Scheduler参数.这个参数指定操作符将它们的部分或全部任务放在一个特定的调度器上执行. 使用ObserveOn和SubscribeOn操作符,你可以让Observable在一个特定的调度器上执行,ObserveOn指示一个Observab

MySQL计划任务(事件调度器) Event Scheduler介绍_Mysql

要查看当前是否已开启事件调度器,可执行如下SQL: SHOW VARIABLES LIKE 'event_scheduler';或 SELECT @@event_scheduler;或 SHOW PROCESSLIST;若显示: +-----------------+-------+| Variable_name   | Value |+-----------------+-------+| event_scheduler | OFF   |+-----------------+-------+

MySQL事件调度器

MySQL 5.1 中新增了事件调度器这一个功能.可以实现类似于SQL Server的Job功能. 1.语法: CREATE EVENT [IF NOT EXISTS] event_nameON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE][ENABLE | DISABLE][COMMENT 'comment']DO sql_statement;View Code 其中schedule的语句可以表示为: AT TIMESTAMP [+ INTE

在J2EE环境中使用Quartz企业级计划调度器(2)

3 自动启动Servlets 我们希望在应用被部署或容器启动时就提交任务.我们必须在web模块并重启动的时候 初始化QuartzInitializerServlet 和 howto.quartz.servlet.QuartzServlet.为了达到 这个目的,我们需要在Web应用的部署描述符(web.xml)中增加以下内容: <servlet> <servlet-name>QuartzInitializer</servlet-name> <display-name

在J2EE环境中使用Quartz企业级计划调度器(1)

Quartz 是来自OpenSymphony的一个开发源代码的企业级工作计划调度器.要了解详情以及下载Quartz请访问http://www.quartzscheduler.org/quartz/.你可以在你的J2EE应用如EJB中使用Quartz来调度工作计划.本文将会介绍在你的J2EE应用中如何使用Quartz来安排工作计划.文章中将会使用Oracle应用服务器10g J2EE容器(OC4J 9.0.4)作为J2EE容器的例子. Quartz 支持多种类型的工作和触发器,但其中最流行的就是c

Hadoop平台中空闲时间调度器的设计与实现

Hadoop平台中空闲时间调度器的设计与实现 杨浩   滕飞   李天瑞   李曌 Hadoop作为开源的云计算平台,被广泛应用于自然语言处理.机器学习.大规模图像处理等领域.随着云计算与各行业广泛而深入的结合,多样化的服务对于时效性要求越来越高.现有的Hadoop调度器多关注于缩短响应时间,而非满足作业的时限要求.为了提高集群处理硬实时作业的性能,设计并实现了一种基于空闲时间的硬实时调度器LSS.在调度过程中,LSS动态估算作业的空闲时间,并据此实时更新作业队列中作业的优先级顺序.实验结果表明

Event Scheduler:MySQL的事件调度器

一.概述 事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能 用操作系统任务调度器才能完成的定时功>能.例如,Linux 中的 crontabe 只能精确到每分钟执行一 次,而 MySQL 的事件调度器则可以实现每秒钟执行一个任务,这在一些对实时性要>求较高的环境下 就非常实用了. 事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器".触发器只是 针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间

【MySQL】事件调度器 (Event Scheduler)

 一 event 介绍         事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器".触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句.事件是由一个特定的线程来管理的,也就是所谓的"事件调度器".启用事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了.通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用. 在使用这个

Java线程池架构(二)多线程调度器

在前面介绍了java的多线程的基本原理信息:<Java线程池架构原理和源码解析>,本文对这个java本身的线程池的调度器做一个简单扩展,如果还没读过上一篇文章,建议读一下,因为这是调度器的核心组件部分. 我们如果要用java默认的线程池来做调度器,一种选择就是Timer和TimerTask的结合,在以前的文章:<Timer与 TimerTask的真正原理&使用介绍>中有明确的说明:一个Timer为一个单独的线程,虽然一个Timer可以调度多个 TimerTask,但是对于一