0

我有一个 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 循环。

我也需要这个是每个用户的,所以一个用户不能与另一个用户操作交互。

控制器是单例的,因此它在所有会话中都有共同的属性。这意味着我们不能将状态存储在全局属性中,然后在循环内部检查更改以使其中断,因为这不是每个会话的属性。

除了让控制器拥有会话范围之外,还有什么方法可以做到这一点?(我什至不确定它是否会起作用)。

提前感谢您,我将不胜感激任何提示。

4

1 回答 1

1

在 db 配置表中存储一个 keepRunning 值,并在 n 秒后检查它。

不同控制器中的单独请求可以独立于该控制器更新状态变量。

于 2011-11-07T08:07:35.167 回答