Как получить уведомление о развертывании EJB (для установки таймера)?

Я должен все же найти хороший способ легкого поддержания сохраненного procs в управлении исходным кодом, которое делает его столь же бесшовным как кодовая база. Этого просто не происходит. Это одно делает помещение SQL в Вашем коде стоящим для меня. Различия в производительности незначительны в современных системах.

9
задан Sergey Mikhanov 15 October 2009 в 12:16
поделиться

3 ответа

Решение, которое я нашел, уродливо, но так же уродливо, как и любое другое законное решение этой проблемы (например, решение от @fvu). Применение аннотации @WebService к компоненту заставит JBoss создать его экземпляр сразу после развертывания (поскольку ему нужен способ создания WSDL компонента), поэтому будет вызван метод, помеченный @PostConstruct . Оттуда я смог установить таймер.

1
ответ дан 4 December 2019 в 21:50
поделиться

Я думаю, что самым простым и переносимым решением является добавление веб-приложения к вашему корпоративному приложению с помощью прослушивателя контекста ( contextInitialized event ), который инициализирует ejb.

Кстати, это более или менее то же самое, что и Quartz Scheduler (класс QuartzInitializerListener)

3
ответ дан 4 December 2019 в 21:50
поделиться

EJB 3.1 introduces the Singleton bean. It will be created at deplyoment of the EJB.

@Singleton
@Startup
public class TimerSessionBean {

    @Resource
    TimerService timerService;

    @PostConstruct
    public void startTimer() {
        Logger.getLogger(getClass().getName()).log(Level.INFO,
                timerService.getTimers().size() + " timers running");

        Logger.getLogger(getClass().getName()).log(Level.INFO, "create a timer");

        timerService.createTimer(10000, 10000, "a timer");
    }

    @Timeout
    void doSomething(Timer timer) {
        System.out.println("something");
    }
}

Another new feature in EJB 3.1 which can be used to run a task periodically is the Schedule annotation.

5
ответ дан 4 December 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: