我有一个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循环打破。
我还需要这是每个用户,所以一个用户不能与另一个用户的操作交互。
控制器是一个单例,所以它在所有会话中都有共同的属性。这意味着我们不能在一个全局属性中存储一个状态,然后在循环中检查是否有变化,这样它就会中断,因为这不是一个每个会话的属性。
除了让控制器具有会话范围之外,还有什么方法可以做到这一点吗?(我甚至不确定它是否会起作用)。
提前谢谢你,任何提示我都会很感激。
在db配置表中存储一个keepRunning值,并在n秒后检查。
另一个控制器中的单独请求可以独立于此控制器更新状态变量