EJB3.0 定時服務:Timer Service

定時服務用作在一段特定的時間後執行某段程序

使用容器對象SessionContext創建定時器,並使用@Timeout 註釋聲明定時器方法

通過依賴注入@Resource SessionContext ctx,獲得SessionContext對象,調用ctx.getTimerService().createTimer(Date arg0, long arg1, Serializable arg2)方法創建定時器,

當定時器創建完成後,還需聲明定時器方法。定時器方法的聲明很簡單,只需在方法上面加入@Timeout 註釋

package ejb;

public interface TimerTest {
 public void schedule(long m);
}

package ejb;

import javax.ejb.Stateless;
import javax.ejb.Remote;
import javax.ejb.SessionContext;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.annotation.Resource;
import Java.util.Date;

import ejb.TimerTest;

@Remote(TimerTest.class)
public @Stateless class TimerTestBean implements TimerTest {
 private @Resource SessionContext ctx;
 private int count = 0;
 public void schedule(long m){
  ctx.getTimerService().createTimer((new Date(new Date().getTime() + m)),m,"我是一棵蔥!");
 }
 
 @Timeout
 public void timeoutHandle(Timer timer){
  System.out.println(timer.getNextTimeout() + " " + count + " " + timer.getInfo());
  count ++;
  if(count > 5){
   System.out.println("Timer canceled!");
   timer.cancel();
   System.out.println("Timer canceled!");
  }
 }
}


客戶端調用EJB服務時激活EJB的timer.

不過,感覺EJB的timer用處不大,還是最好在客戶端啓動定時器,然後定時調用ejb的服務比較好!


歡迎訪問肖海鵬老師的課程中心:http://edu.51cto.com/lecturer/user_id-10053053.html

歡迎加入肖海鵬老師技術交流羣:2641394058(QQ)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章