我有一个 Spring @Controller。 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 循环。
此外,我需要针对每个用户进行此操作,因此一个用户无法与其他用户操作进行交互。
Controller 是一个单例,因此它在所有 session 中具有共同的属性。这意味着我们不能将状态存储在全局属性中,然后检查循环内部是否有更改,以便它可以中断,因为这不是每个 session 的属性。
除了让 Controller 具有 session 范围之外,还有什么方法可以做到这一点吗? (我什至不确定它是否会起作用)。
预先感谢您,我将不胜感激任何提示。
最佳答案
将 keepRunning 值存储在数据库配置表中,并在 n 秒后检查该值。
不同 Controller 中的单独请求可以独立于该 Controller 更新状态变量。
关于java - Spring Controller ,如何根据新的HttpRequest跳出循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034014/