title: EJB3.1 Timer cancel issue
body: <p>I have a problem with EJB3.1 Timer service. I find this issue quite strange! I have a stateless session bean like below deployed on JBoss7.1.1 application server.</p>
  
  <pre><code>import javax.annotation.Resource;
  import javax.ejb.Local;
  import javax.ejb.Remote;
  import javax.ejb.Stateless;
  import javax.ejb.Timeout;
  import javax.ejb.Timer;
  import javax.ejb.TimerService;
  import javax.interceptor.Interceptors;
  
  @Stateless
  @Local(HelloUserLocal.class)
  @Remote(HelloUserRemote.class)
  public class HelloUserBean implements HelloUserRemote {
  
  @Resource
  private TimerService timerService;
  
  @Interceptors({SayHelloMethodLoggingInterceptor.class})
  public String sayHello(String name) {
      System.out.println("In sayHello(name)");
      String customName = "Hello " + name + " welcome to EJB 3 In Action!";
      System.out.println("Before returning, register Timer service");
  
      timerService.createTimer(10000, 2000, "Hey! Good Night!");
  
      return customName; 
  }
  
  @Timeout
  public void activateTimer(Timer timer){
      System.out.println(timer.getInfo());
      //timer.cancel();
  }   
  
  }
  </code></pre>
  
  <p>I registered a Timer with initialDuration and intervalDuration as above. After I deployed my bean, it works fine. Okay, I got the thing and I don't want my server console to clutter. So, I commented out timerService.createTimer(..) line of code and redeployed. But, I still see the message being printed. Okay, I know EJB Timers are persisted and survive server restarts. The only way I can stop my Timer Service is to use timer.cancel() method and then redeploy. But, how can I stop or de-register my Timer from the container without using timer.cancel()?</p>
  
  <p>How much time timer.cancel(); take to cancel the Timer? When I use timer.cancel() and then redeployed my application, I can see "Hey! Good Night!" being printed two times before stopping, which means certainly timer.cancel() is taking more than 2000ms?</p>