2013-02-20 6 views
12

Jestem nowy w architekturze Jetty i klient/serwer.Jak zatrzymać Jetty

Udało mi się napisać serwer pomostowy w czasie zaćmienia i działa.

Ale jak mogę zatrzymać serwer pomostowy? Słyszałem coś o stop.jar i start.jar. Gdzie mogę go znaleźć? Czy jest zintegrowany z pomostem?

Odpowiedz

20

Różne artefakty jetty-all.jar mogą być użyte do wbudowania w pomost. Jeśli zdecydujesz się użyć tego słoika, musisz zarządzać własnym uruchamianiem/zamykaniem.

Aktualizacja: 2015: Od Jetty 9, stosowanie jetty-all.jar jako zależność jest przestarzała. Dzieje się tak, ponieważ od wersji Jetty 9 nie można obecnie "obsłużyć" całego Mola w jednym słoju zagregowanym. Istnieją komponenty Jetty, których nie można uwzględnić, ponieważ spowodują problemy z tym zagregowanym słojem. Przyszłość Jetty z obsługą HTTP/2 sprawia, że ​​ten zagregowany jar jest mniej przydatny jako zależność.

Typowe zastosowanie trybu wbudowania

wątku, który uruchamia serwer:

Server server = new Server(); 
// various server configuration lines 
// ... 

// Start server (on current thread) 
server.start(); 

// Have current thread wait till server is done running 
server.join(); 

innym wątku, który informuje serwer do zamykania

// Have server stop running 
server.stop(); 

W tym momencie pierwotnego wątku czekać na server.join(); jest kompletny i wątek nadal działa.

standardowej dystrybucji Wykorzystanie

Jeśli używasz standardowego rozkładu dostępnego download.eclipse.org/jetty/ masz start.jar które mogą być wykorzystane do siebie start/stop molo.

Po rozpakowaniu swojej dystrybucji-pomostu znajdziesz numer start.jar w najwyższym katalogu. Można to wykorzystać w następujący sposób.

Proces, który rozpoczyna pomost:

$ java -jar start.jar STOP.PORT=28282 STOP.KEY=secret 

Proces, który zatrzymuje pomost:

$ java -jar start.jar STOP.PORT=28282 STOP.KEY=secret --stop 
+0

Dzięki za odpowiedź. Użyłem stop(), ale wciąż mogłem wysłać prośbę, więc pomyślałem, że to nie działa. Ale myślę, że moim problemem było, że zacząłem więcej niż jedną instancję. Teraz mam metodę uruchamiania i restartowania, którą mogę wywołać w terminalu i działa. Będę musiał dodać uwierzytelnienie do moich metod uruchamiania i zatrzymywania, ale to kolejny problem. – Salvadora

+0

Hej, czy wiesz, czy istnieje sposób na ponowne uruchomienie pomostu bez wznawiania wątku, który dołączył()? – lisak

2

Jeśli pomost jako plugin maven, należy zatrzymać serwer poprzez naciśnięcie Ctrl + C i naciśnij Y, aby potwierdzić zakończenie.