2012-01-06 3 views
0

Это может быть глупый вопрос, но можно ли посвятить EJB управлению всеми таймерами для всего контейнера? Я не знаю, как это будет достигнуто, поскольку я не так сильно разбираюсь в Java EE, но я думаю что-то вроде линий отдельных сессионных beans, имеющих доступ к этому фактору таймера, и сессионные компоненты передаются функцией указатель вместе с метаданными для самой работы? В дополнение к фактору таймера, тогда будет возможно создать графический интерфейс или структуру управления, чтобы, по крайней мере, посмотреть, какие задания выполняются и их текущий статус?Возможно ли создать EJB, предназначенный для управления таймерами EJB 3.1?

В основном я хочу/хочу иметь некоторые функциональные возможности Quartz (возможность остановки, запуска, изменения заданий) при использовании таймеров EJB 3.1. Попытка выяснить, является ли это даже отдаленной возможностью или нет.

Редактировать: Как отметили некоторые, проблема заключается в том, что служба таймера не может получить все таймеры для всего контейнера. Моя идея - создать все таймеры в специальном таймере, в котором все таймеры могут управляться. Проблема в том, что я понятия не имею, как это сделать, или это возможно. Я играл с передающими указателями функций (так близко, как вы можете добраться до них в java) в фазе таймера вместе с параметрами синхронизации, но это кажется очень грубым.

+0

вы используете JBoss или Websphere? В спецификации JavaEE такой функции нет. Если это возможно, вам придется обратиться к определенному контейнеру. –

+0

WebSphere. Tagged JBoss, поскольку это проблема, которая не является специфичной для AS. –

ответ

0

Возможно, вы ищете javax.ejb.TimerService. Вводят его в фасоли:

@Resource 
private SessionContext sessionContext; 

Затем, в качестве примера, вы можете получить перебрать все таймеры:

TimerService timerService = sessionContext.getTimerService(); 
for (Timer timer : timerService.getTimers()) { 
    timer.cancel(); //etc. 
} 
+0

Специфично для одного приложения, не применимого к другим, установленным в контейнере. –

+1

Это относится к одному компоненту EJB. Вы не можете видеть таймеры, созданные другими компонентами в одном приложении. –

+0

@AndreRodrigues Да, один компонент можно использовать для управления таймерами в приложении, но предоставленный ответ не поможет другим приложениям, развернутым в контейнере, о которых упоминает пользователь. –