6

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

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

但是怎么做?

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

当控制器处于等待()时取消客户端请求时,我看到这样的日志记录:

“ <[STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' 已经忙了“623”秒来处理请求等......”

4

1 回答 1

0

我建议将您的控制器逻辑包含在 try/catch 中,并尝试杀死 catch 块中的线程。

于 2020-01-16T19:03:41.320 回答