Jetty的关闭,能够调用Server.stop()方法,这个方法先关闭connections,而后处理队列中未完成的request。这里有个问题,未完成的request还会写响应,但此时connection已经关闭了。 chazovams在issues中提了这个问题,gregw给了解决办法。git
chazovams: Jetty中Server.stop()方法先关闭connections,而后处理队列中未完成的request。在个人应用中,request完成后,因为connection已经关闭了,响应不能写回去了。我用的是9.4.7版本,我怎么才能避免request‘完成’以前不要关闭connection?github
gregw: 嗨chazovams 你是否配置了stats handler,和一个positive stop超时参数?eclipse
chazovams: stop超时默认值是30s,我没有设置stats handler。但当我设置这个stats handler后能够关闭了,你能解释一下,为何不设置这个handler就不能优雅的关闭吗?我使用的是SpringBoot,我发现只能在Server Customizer中设置,但我不想这么作。队列
gregw: 没有stats handler,Jetty不知道未完成的request数量。正是stats handler在统计这个数量count,并且在stats handler优雅关闭时,它要等到count到0。ip
https://github.com/eclipse/jetty.project/issues/2076get
Jetty的优雅关闭,须要配置一个stats handler和一个positive stop超时参数。it