EJB 定时服务实现

用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();  
        }  
          
    }  
}  


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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值