我有一个带有@RequestMapping映射方法的Controller,它返回一个JSON格式的对象,所以它也有@ResponseBody。获取它应该返回的对象的一部分是对象的wait(),在生产者/消费者类型的情况下。
客户端当然可以随时取消它们的请求,但我希望能够在客户端取消时中断控制器正在执行的wait()命令。目前,ajax请求会在statusType超时时抛出客户端错误,我可以在客户端处理它。但它似乎仍然在服务器端等待我要清理的线程。
但是怎么样?
我似乎记得在旧的Web应用程序中收到Socket Closed类型的错误,我不会在WebLogic 10.3上看到这个Spring 3应用程序发生的事情
当控制器坐在wait()上时,我看到当客户端请求被取消时这样记录:
“< [STUCK] ExecuteThread:'0'代表队列:'weblogic.kernel.Default(自我调整)'一直忙于”623“秒处理请求等......”
答案 0 :(得分:0)
我建议将您的控制器逻辑包含在try / catch中,并尝试杀死catch块中的线程。