如何在Spring 3中处理客户取消请求?

Tra*_*ant 5 java spring-mvc

我有一个Controller与一个用@RequestMapping映射的方法,它返回一个JSON格式的对象,所以它也有@ResponseBody.获取它应该返回的对象的一部分是对象的wait(),在生产者/消费者类型的情况下.

客户端当然可以随时取消它们的请求,但我希望能够在客户端取消时中断控制器正在执行的wait()命令.目前,ajax请求会在statusType超时时抛出客户端错误,我可以在客户端处理它.但它似乎仍然在服务器端等待我要清理的线程.

但是怎么样?

我似乎记得在旧的Web应用程序中收到Socket Closed类型的错误,我没有看到WebLogic 10.3上的这个Spring 3应用程序发生了这种情况

当控制器坐在wait()上时,当客户端请求被取消时,我看到这样的记录:

"<[STUCK] ExecuteThread:'0'代表队列:'weblogic.kernel.Default(自我调整)'一直忙于"623"秒处理请求等..."

heu*_*eug 0

我建议将控制器逻辑放在 try/catch 中,并尝试终止 catch 块中的线程。