EJB timer的种类
2023-07-05
从EJB容器的定时服务建立的Timer对象, Single Action Timer和Interval Timer, Single Action Timer是相对与间隔循环型Timer来讲的, Single Action Timer只有一次timeout。Single-Action time和Interval Timer第一次启动都各有两种方法:绝对时间启动和相对时间启动。
所以总共有四种EJB timer
1. 以绝对时间启动的Single Action Timer
你可以指定一个绝对时间,但时间到达(timeout)时,这可以调用TimerService的方法来建立这个Timer:
Timer createTimer(Date expirationDate, Serializable info)
2. 以相对时间启动的Single Action Timer
你可以指定一个相对于Timer简历的时间,当这个相对时间到达时,会调用Timeout方法一次,这个调用可以通过TimerService的一下方法来建立这个Timer:
Timer createTimer(long duration, Serializable info)
3. 绝对时间的Interval Timer
你可以指定一个初始的绝对时间(initialExpiration), 当这个时间到达时,会调用Timeout方法,之后每个一段指定的时间(intervalDuration)就会重新调用Timeout方法一次, 建立这种Timer的方法:
Timer createTimer(Date initialExpiration,long intervalDuration, Serializable info)
4. 相对时间的Interval Timer
你可以指定一个相对与Timer建立的时间(initialDuration), 当时间到达时就会调用Timerout方法,之后每隔一段指定的时间(intervalDuration)就会重新调用Timeout方法一次,以下是建立这种方法的例子:
Timer createTimer(long initialDuration, long intervalDuration, Serializable info)
这四个createTimer()方法的最后一个Serializable参数,可以设定给Timer对象, Timeout的调用方法中必须接受Timer对象最为参数,你可以用它的getInfo()方法来取得传入的Serializable对象,当多个Timer与Bean关联时,必须识别Timer时间是来之于哪个Timer,也可以根据传入的Serializable对象来判断。