Spring Controller, как выйти из цикла на основе нового HttpRequest? - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть Spring @Controller. Внутри контроллера есть метод, который после определенного запроса входит в цикл while, который проверяет наличие новых данных и прерывает их только при обнаружении данных:

while(System.currentTimeMillis() < end && controllersDataStore.getAutoupdate() == eventAutoUpdate ) {

        gridData = (GenericGrid) dsEventLogService.retrieveNewEventGridRows(gridHelper);
        if(gridData.getAaData().size()==0){
            try {
                Thread.sleep(POLLING_INTERVAL);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        else{
            break;
        }
    }

Мне нужно выйти из цикла в некоторых случаях, даже если данные не найдены, после определенного действия пользователя. Поэтому мне нужно из нового HttpRequest, чтобы иметь возможность выйти из предыдущего цикла while.

Также мне нужно, чтобы это было для каждого пользователя, чтобы один пользователь не мог взаимодействовать с действиями другого пользователя.

Контроллер является одноэлементным, поэтому он имеет общие свойства во всех сеансах. Это означает, что мы не можем сохранить состояние в глобальном свойстве, а затем проверить внутри цикла наличие изменений, чтобы оно могло прерваться, потому что это не будет свойство для каждого сеанса.

Есть ли способ сделать это, кроме наличия контроллера для области видимости сеанса? (Что я даже не уверен, будет ли это работать).

Заранее спасибо, буду признателен за любой совет.

1 Ответ

1 голос
/ 07 ноября 2011

Сохраните значение keepRunning в таблице конфигурации db и через n секунд проверьте это тоже.

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

...