Таймеры EJB зависают при проверке состояния - PullRequest
2 голосов
/ 01 февраля 2012

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

Сценарий для воспроизведения этого ниже:

1) Запустите таймер.

2) В методе тайм-аута вызовите другой метод класса и оставайтесь там в течение 30 минут.

3) До истечения 30 минут проверьте состояние таймера, вызвав указанный ниже метод.

    public String getTimerStatus() {
    String returnStatus = "Stopped";
    for (Object obj : timerService.getTimers()) {
        Timer t = (Timer) obj;
        try {
            String scheduled = (String) t.getInfo();
            if (scheduled.equals(TIMER_NAME)) {
                returnStatus = "Running";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return returnStatus;
}

4) Приложение зависает при вызове метода t.getInfo (), как показано выше.

Пожалуйста, дайте мне знать любое решение для этой проблемы.

1 Ответ

0 голосов
/ 19 февраля 2012

Моя идея заключается в том, что t.getInfo () синхронизируется или пытается получить блокировку другим способом. Не могли бы вы предоставить код для метода тайм-аута и для другого метода класса, который он вызывает? Вы используете синхронизацию?

...