1 22 package org.jboss.ejb3.timerservice.jboss; 23 24 import javax.ejb.TimerService ; 25 import javax.management.ObjectName ; 26 27 import org.jboss.ejb.txtimer.EJBTimerService; 28 import org.jboss.ejb3.EJBContainer; 29 import org.jboss.ejb3.timerservice.TimedObjectInvoker; 30 import org.jboss.ejb3.timerservice.TimerServiceFactory; 31 import org.jboss.logging.Logger; 32 import org.jboss.mx.util.MBeanProxyExt; 33 import org.jboss.mx.util.MBeanServerLocator; 34 35 41 public class JBossTimerServiceFactory extends TimerServiceFactory 42 { 43 private static Logger log = Logger.getLogger(JBossTimerServiceFactory.class); 44 45 48 @Override 49 public TimerService createTimerService(ObjectName containerId, TimedObjectInvoker invoker) 50 { 51 TimerService timerService = null; 52 try 53 { 54 EJBTimerService service = getEJBTimerService(); 55 TimerService delegate = service.createTimerService(containerId, null, invoker); 56 timerService = new TimerServiceFacade(containerId, delegate); 57 } 58 catch (Exception e) 59 { 60 if (log.isTraceEnabled()) 62 { 63 log.trace("Unable to initialize timer service", e); 64 } 65 else 66 { 67 log.trace("Unable to initialize timer service"); 68 } 69 } 70 return timerService; 71 } 72 73 protected EJBTimerService getEJBTimerService() 74 { 75 return (EJBTimerService) MBeanProxyExt.create(EJBTimerService.class, EJBTimerService.OBJECT_NAME, MBeanServerLocator.locateJBoss()); 76 } 77 78 81 @Override 82 public void removeTimerService(TimerService timerService) 83 { 84 removeTimerService(((TimerServiceFacade) timerService).getContainerId()); 85 } 86 87 protected void removeTimerService(ObjectName containerId) 88 { 89 try 90 { 91 EJBTimerService service = getEJBTimerService(); 92 service.removeTimerService(containerId, true); 93 } 94 catch (Exception e) 95 { 96 if (log.isTraceEnabled()) 98 { 99 log.trace("Unable to initialize timer service", e); 100 } 101 else 102 { 103 log.trace("Unable to initialize timer service"); 104 } 105 } 106 } 107 108 public void restoreTimerService(TimerService aTimerService) 109 { 110 if (aTimerService == null) 111 { 112 log.warn("TIMER SERVICE IS NOT INSTALLED"); 113 return; 114 } 115 TimerServiceFacade timerService = (TimerServiceFacade) aTimerService; 116 EJBContainer container = timerService.getContainer(); 117 ClassLoader loader = container.getClassloader(); 119 120 getEJBTimerService().restoreTimers(timerService.getContainerId(), loader); 121 } 122 } 123 | Popular Tags |