1 22 package org.jboss.ejb3.timerservice.quartz; 23 24 import java.io.Serializable ; 25 26 import javax.ejb.EJBException ; 27 import javax.ejb.NoSuchObjectLocalException ; 28 import javax.ejb.Timer ; 29 import javax.ejb.TimerHandle ; 30 import javax.management.ObjectName ; 31 32 import org.jboss.ejb3.Ejb3Registry; 33 import org.jboss.ejb3.timerservice.TimedObjectInvoker; 34 import org.jboss.logging.Logger; 35 import org.quartz.Scheduler; 36 import org.quartz.SchedulerException; 37 import org.quartz.Trigger; 38 39 45 public class PersistentTimer implements Serializable , TimerHandle  46 { 47 private static final Logger log = Logger.getLogger(PersistentTimer.class); 48 49 private static final long serialVersionUID = 1L; 50 51 private String triggerName; 55 private String triggerGroup; 56 private ObjectName objectName; 57 58 private Serializable info; 59 60 protected PersistentTimer(Trigger trigger, ObjectName objectName, Serializable info) 61 { 62 assert trigger != null; 63 assert objectName != null; 64 65 this.triggerName = trigger.getName(); 66 this.triggerGroup = trigger.getGroup(); 67 this.objectName = objectName; 68 this.info = info; 69 } 70 71 protected TimedObjectInvoker getTimedObjectInvoker() 72 { 73 TimedObjectInvoker invoker = (TimedObjectInvoker) Ejb3Registry.getContainer(objectName.getCanonicalName()); 75 assert invoker != null; 76 return invoker; 77 } 78 79 public Timer getTimer() throws IllegalStateException , NoSuchObjectLocalException , EJBException  80 { 81 try 83 { 84 Scheduler scheduler = QuartzTimerServiceFactory.getScheduler(); 85 Trigger trigger = scheduler.getTrigger(triggerName, triggerGroup); 86 if(trigger == null) 87 throw new NoSuchObjectLocalException ("can't find trigger '" + triggerName + "' in group '" + triggerGroup + "'"); 88 return new TimerImpl(scheduler, trigger, info); 89 } 90 catch(SchedulerException e) 91 { 92 log.error("getTimer failed", e); 93 throw new EJBException (e); 94 } 95 } 96 } 97 | Popular Tags |