EJB 定时服务实现

来源:互联网 发布:我的世界手机版js天堂 编辑:程序博客网 时间:2024/04/28 21:42

用EJB3.0实现定时服务,并提供实现取消所有已启动的服务。

  远程接口

package examples.timer.remote;/** *@Project:[SayHello] *@Package:[examples.timer.remote] *@Class:[TimerService.java] *@author: lhc *@time:2012-2-19 下午12:19:04  *@version: 1.0.0 *@Copy:2012 y_rich */public interface TimerService {   public void scheduleTimer(long milliseconds);   public boolean cancelTimer();}


实现

package examples.timer.Intface;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import javax.annotation.Resource;import javax.ejb.Remote;import javax.ejb.SessionContext;import javax.ejb.Stateless;import javax.ejb.Timeout;import javax.ejb.Timer;import javax.persistence.EntityManager;import javax.persistence.Query;import examples.timer.remote.TimerService;/** *@Project:[SayHello] *@Package:[examples.timer.Inface] *@Class:[TimerServiceBean.java] *@author: lhc *@time:2012-2-19 下午12:20:49  *@version: 1.0.0 *测试EJB中构造函数和调用次数的关系 */@Stateless  @Remote ({TimerService.class}) public class TimerServiceBean  implements TimerService{     private @Resource SessionContext ctx;       protected EntityManager em;   //实体管理实例     protected Timer timer = null;     public TimerServiceBean()     {     }          public void scheduleTimer(long milliseconds)       {        //创建为间隔定时器         ctx.getTimerService().createTimer(new Date(new Date().getTime()),milliseconds, "Hello world... ...");              }          /**      * @param timer      * 定期处理离线设备      */     @Timeout       public void timeoutHandler(Timer timer)       {             System.out.println("Hello world from Timer!");     }  @Override  public boolean cancelTimer()   {   int iterTimersSize = ctx.getTimerService().getTimers().size();   if (iterTimersSize > 0)   {     Iterator iterTimers = ctx.getTimerService().getTimers().iterator();     System.out.println("Timer number -> "+ iterTimersSize);     while(iterTimers.hasNext())     {      this.timer = (Timer) iterTimers.next();      this.timer.cancel();     }     return true;         }   else   {    return false;   }  } }

测试程序

 

package examples.timer.Inface;import java.util.Date;  import java.util.Hashtable;  import javax.naming.Context;  import javax.naming.InitialContext;   import examples.timer.remote.TimerService;public class TaskClient  {      public static void main(String[] args)      {          Hashtable evn = new Hashtable();          evn.put(Context.PROVIDER_URL, "127.0.0.1:1099");          evn.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");           try          {              System.out.println(new Date().getTime());              InitialContext ctx=new InitialContext(evn);              TimerService timer = (TimerService) ctx.lookup("TimerServiceBean/remote");             // timer.scheduleTimer((long)1000*2);           System.out.println(timer.cancelTimer());            System.out.println("定时器已经启动");          }           catch (Exception e)          {                e.printStackTrace();          }                }  }  


 希望对大家有一点帮助,哈哈。

 

 

 

原创粉丝点击