我在EJB容器内创建一个定时器
public void scheduleTimer(long milliseconds)
{
/*
* 调用ctx.getTimerService().createTimer(Date arg0, long arg1,
* Serializable arg2)方法创建定时器,三个参数的含义如下:Date arg0
* 定时器启动时间,如果传入时间小于现在时间,定时器会立刻启动。long arg1
* 间隔多长时间后再次触发定时事件。单位:毫秒Serializable arg2 你需要
* 传给定时器的参数,该参数必须实现Serializable接口。
*/
ctx.getTimerService().createTimer(new Date(new Date().getTime() + milliseconds),milliseconds, "");
}
@Timeout
/**
* 定时器方法
* <p>定时器方法的声明很简单,只需在方法上面加入@Timeout 注释,另外定时器方法
* 必须遵守如下格式:void XXX(Timer timer)在定时事件发生时,此方法将被执行.</p>
* @param timer
* @return Void
*/
public void timeoutHandler(Timer timer)
{
}
定时器回调timeoutHandler方法,假设定时器每隔5分钟去执行一次,去执行回调方法,假设定时器每隔5分钟去设备上面采集数据,但是第一次没有采集来,于是我设置一个时间间隔比如说5秒钟,再去设备上面采一次数据。连续采集三次,如果还是没有采集来数据,定时器销毁。
就类似于线程,我让线程sleep()一下,然后再去执行,但是我不知道在EJB容器中应该怎么实现我这里的功能。
请大侠帮忙!!!!
public void scheduleTimer(long milliseconds)
{
/*
* 调用ctx.getTimerService().createTimer(Date arg0, long arg1,
* Serializable arg2)方法创建定时器,三个参数的含义如下:Date arg0
* 定时器启动时间,如果传入时间小于现在时间,定时器会立刻启动。long arg1
* 间隔多长时间后再次触发定时事件。单位:毫秒Serializable arg2 你需要
* 传给定时器的参数,该参数必须实现Serializable接口。
*/
ctx.getTimerService().createTimer(new Date(new Date().getTime() + milliseconds),milliseconds, "");
}
@Timeout
/**
* 定时器方法
* <p>定时器方法的声明很简单,只需在方法上面加入@Timeout 注释,另外定时器方法
* 必须遵守如下格式:void XXX(Timer timer)在定时事件发生时,此方法将被执行.</p>
* @param timer
* @return Void
*/
public void timeoutHandler(Timer timer)
{
}
定时器回调timeoutHandler方法,假设定时器每隔5分钟去执行一次,去执行回调方法,假设定时器每隔5分钟去设备上面采集数据,但是第一次没有采集来,于是我设置一个时间间隔比如说5秒钟,再去设备上面采一次数据。连续采集三次,如果还是没有采集来数据,定时器销毁。
就类似于线程,我让线程sleep()一下,然后再去执行,但是我不知道在EJB容器中应该怎么实现我这里的功能。
请大侠帮忙!!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货