Таймеры EJB3 наследуют компоненты, которые они создали? - PullRequest
2 голосов
/ 25 августа 2010

Таймеры создаются в EJB3 с использованием TimerService.createTimer(), а затем запускаются любым методом обратного вызова, аннотированным аннотацией @Timeout, т.е.:

@Resource
private TimerService timerService;

public void createHampster() {
    Hampster hampster = new Hampster("Fluffy III");
    timerService.createTimer(3000, 3000, hampster);
}

(...)

@Timeout
public void feedHampster(Timer timer) {
    Hampster hampster = (Hampster) timer.getInfo()
    //(...)
}

Итак, мой вопрос: должны ли эти два блока кода находиться в одном бине? Таймеры наследуют боб, в котором они были созданы, или они глобальны? Мое собственное тестирование предполагает, но первое, и я не нашел ничего определенного в документации.

1 Ответ

2 голосов
/ 25 августа 2010

Они привязаны к бобу, который их создает.Разделы 18.2 спецификации EJB 3 гласят:

Класс EJB компонента EJB, использующего службу таймера, должен предоставлять метод обратного вызова тайм-аута.

и

Когда время, указанное при создании таймера, истекло, контейнер вызывает метод обратного вызова тайм-аута компонента.

...