码头优雅的关机

时间:2017-12-21 10:05:53

标签: java spring spring-boot jetty

几天前,我突然发现Jetty正常关机并不是自动使用SpringBoot,Jetty服务器在Spring上下文关闭后停止,所以我的应用程序中发生了很多错误。所以我必须在function time_elapsed($datetime, $full = 7) { $now = new DateTime; $ago = new DateTime($datetime); $diff = $now->diff($ago); echo "</br>"; echo "echo db timestamp for test: "; echo $datetime; echo "</br>"; $diff->w = floor($diff->d / 7); $diff->d -= $diff->w * 7; $string = array( 'y' => 'year', 'm' => 'month', 'w' => 'week', 'd' => 'day', 'h' => 'hour', 'i' => 'minute', 's' => 'second', ); foreach ($string as $k => &$v) { if ($diff->$k) { $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : ''); } else { unset($string[$k]); } } if (!$full) $string = array_slice($string, 0, 1); return $string ? implode(', ', $string) . ' ago' : 'just now'; } 上写@EventListener来处理关闭我的服务的命令并停止ContextClosedEvent

JettyEmbeddedServletContainer

使用此代码,Jetty Server首先停止,因此无法创建任何新连接,并且可以处理已接收的请求。但在这种情况下,即使处理成功,Jetty也不会为最后收到的请求发送2xx响应。我收到了错误:

@Configuration
public class MyContextConfiguration {

    @Autowired
    private EmbeddedWebApplicationContext webApplicationContext;

    @EventListener(ContextClosedEvent.class)
    public void shutdown() {   
        webApplicationContext.getEmbeddedServletContainer().stop();

        myService1.stop();
        myService2.stop();
    }
}

有人可以帮我这个吗?

0 个答案:

没有答案