Таймеры EJB зависают при проверке статуса

Я использую таймеры 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(), как показано выше.

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


person Ran    schedule 01.02.2012    source источник
comment
Можете ли вы показать еще немного кода? Моя идея заключается в том, что вы управляете потоками, которыми должен управлять контейнер. Это может вызвать проблемы, которые вы испытываете   -  person perissf    schedule 03.02.2012


Ответы (1)


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

person balage    schedule 18.02.2012