我使用嵌入式 Jetty 来托管 WEB 服务器。请求(通过我的内部实现)转发到动态加载的 JAR 中的代码。有时我需要热更新内存中的 JAR,为此我会等待请求完成,但可能会发生这种情况,要么是因为编程错误,要么是因为实际长时间运行的操作等待超出了合理的时间。
我想在超时后取消对 WEB 请求的处理。
在这种情况下我可以使用 Jetty (v.8+) 做什么?
PS:我知道 Thread.stop() 在 WEB 请求卡住的线程上,这似乎不是一个好方法。
最佳答案
您可以编写一个 Jetty HandlerWrapper
,它使用 ScheduledExecutorService
来中断请求线程(如果请求线程在一段时间后尚未完成)。请参阅此处的示例:
关于java - 如何优雅地取消嵌入式 Jetty 中死锁的 WEB 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37834213/