2013-04-10 3 views
24

пример, взятый из встроенного Jetty учебник предлагает следующее:Embedded Jetty почему использовать присоединиться

public static void main(String[] args) throws Exception 
{ 
    Server server = new Server(8080); 
    server.setHandler(new HelloHandler()); 

    server.start(); 
    server.join();} 

Почему мне нужно добавить строку server.join()? Он отлично работает без него.

ответ

-2

join() блокируется, пока сервер не будет готов. Он ведет себя как Thread.join() и действительно вызывает join() пула потоков Jetty. Все работает без этого, потому что причал начинается очень быстро. Однако, если ваше приложение достаточно тяжелое, запуск может занять некоторое время. Вызов join() гарантирует, что после него сервер действительно готов.

+0

На самом деле это не так быстро, потребовалось 1/3 минуты, чтобы загрузить сервер, но по-прежнему не вижу, как соединение мне поможет. –

+17

'Server.join()' ожидает полного завершения работы сервера, без него будет запущен пример в вопросе, и 'main()' будет завершен, что приведет к отключению JVM. –

+6

'Server.start()' вернется, как только основной жизненный цикл сервера завершит его запуск. Который включает все компоненты, которые вы указываете и присоединяете к Серверу, перед вызовом 'Server.start()'. Обратите внимание, однако, что некоторые компоненты, такие как DeploymentManager (который не использует вопрос), имеют свой собственный поток, который не связан с этим обобщением. Например, лучше спросить соединители для их состояния после 'Server.start()' и до 'Server.join()' –

Смежные вопросы