Отключение всех расписаний в Glassfish 3.1 - PullRequest
5 голосов
/ 25 января 2012

Как я могу отключить все планировщики (@Schedule аннотированный) в проекте, развертываемом на Glassfish 3.1
Может быть, есть некоторые записи конфигурации для этого?
У меня есть около 20 EJB с планировщиками в моем проекте, и если Я хочу проверить / исправить небольшую вещь, я не хочу, чтобы все / некоторые таймеры запускались.

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Доступ к TimerService#getTimers() вернет только таймеры для этого конкретного EJB. Не существует стандартизированного способа доступа ко всем таймерам в контейнере (на самом деле, вот запрос улучшения: http://java.net/jira/browse/EJB_SPEC-47).

Полагаю, вам нужно использовать какое-то проприетарное решение Glassfish и поковыряться с их внутренностями (если это возможно) Я бы спросил Список рассылки GlassFish на вашем месте.

2 голосов
/ 26 января 2012

к сожалению, я не знаю, есть ли какие-либо записи конфигурации для решения вашей проблемы, но есть программный способ сделать это, вызвав cancel () -метод для Timer -объекты, предоставленные TimerService .

Вот пример класса, который я просто помещаю в проекты, когда хочу протестировать только небольшие вещи:

@Stateless
public class ScheduleCancellation {

  @Resource
  private TimerService timerService;

  @Schedule(second = "0", minute = "*", hour = "*")
  public void cancelTimers() {
    System.out.println("cancelTimers()");
    for (Timer timer : timerService.getTimers()) {
      System.out.println("schedule gone!");
      timer.cancel();
    }
  }

  @Schedule(second = "*", minute = "*", hour = "*")
  public void tick() {
    System.out.println("tick");
  }
}

Hopeэто помогает!:)

...