Embedded Jetty warum beitreten
Ein Beispiel genommen aus einem Eingebetteten Jetty-tutorial schlägt vor, die folgenden:
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);
server.setHandler(new HelloHandler());
server.start();
server.join();}
Warum muss ich die Zeile hinzufügen server.join()
? Es funktioniert gut, ohne es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
join()
blockiert, bis der server bereit ist. Es verhält sich wieThread.join()
und in der Tat fordertjoin()
Jetty-thread-pool. Funktioniert alles ohne diese, weil jetty startet sehr schnell. Allerdings, wenn Ihre Anwendung ist schwer genug, der start kann einige Zeit dauern. Call ofjoin()
gewährleistet, dass nach es der server ist in der Tat bereit.Server.join()
wartet, bis der server vollständig zu stoppen, ohne die es das Beispiel in der Frage beginnen würde und diemain()
würde aus wodurch die JVM shutdown.Server.start()
zurückkehren, sobald die wichtigsten Lebenszyklus des Servers abgeschlossen ist it-startup. Enthält alle Komponenten, die Sie angeben, und befestigen Sie den Server vor dem AufrufServer.start()
. Beachten Sie jedoch, dass einige Komponenten, wie der DeploymentManager (was die Frage nicht verwenden) haben Ihren eigenen thread, die ist nicht verpflichtet zu dieser Verallgemeinerung. Es ist gute Praxis, zum Beispiel, zu bitten, die Anschlüsse für Ihren Staat nachServer.start()
und vorServer.join()
Server.start()
wartet, bis der server vollständig zu starten. Es folgt die Komponente LifeCycle-Verhalten von Jetty. Komponenten, die spawn-threads und Verhalten sich außerhalb des Lebenszyklus sind ausgeschlossen von dieser Aussage (wie das Dateisystem ändern, Scanner und DeploymentManager)