Erstellen und Konfigurieren von Jetty 9 Server in Java

Erstellen und Konfigurieren von Jetty 9 Server in Java

1. Überblick

In diesem Artikel wird das programmgesteuerte Erstellen und Konfigurieren einer Jetty-Instanz erläutert.

Jetty ist ein HTTP-Server und ein Servlet-Container, die leicht und einfach einzubetten sind. Wir werden uns ansehen, wie eine oder mehrere Instanzen des Servers eingerichtet und konfiguriert werden.

2. Maven-Abhängigkeiten

Zu Beginn möchten wiradd Jetty 9 with the following Maven dependencies in unserepom.xml eingeben:


    org.eclipse.jetty
    jetty-server
    9.4.8.v20171121


    org.eclipse.jetty
    jetty-webapp
    9.4.8.v20171121

3. Erstellen eines Basisservers

Das Hochfahren eines Embedded Servers mit Jetty ist so einfach wie das Schreiben:

Server server = new Server();
server.start();

Das Herunterfahren ist ebenso einfach:

server.stop();

4. Handler

Nachdem unser Server nun betriebsbereit ist, müssen wir ihn anweisen, was mit den eingehenden Anforderungen zu tun ist. Dies kann über dieHandler-Schnittstelle durchgeführt werden.

Wir könnten selbst eine erstellen, aber Jetty bietet bereits eine Reihe von Implementierungen für die häufigsten Anwendungsfälle an. Schauen wir uns zwei davon an.

4.1. WebAppContext

Mit der KlasseWebAppContextkönnen Sie die Anforderungsbearbeitung an eine vorhandene Webanwendung delegieren. Die Anwendung kann entweder als WAR-Dateipfad oder als Webapp-Ordnerpfad bereitgestellt werden.

Wenn wir eine Anwendung im Kontext "myApp" verfügbar machen möchten, schreiben wir:

Handler webAppHandler = new WebAppContext(webAppPath, "/myApp");
server.setHandler(webAppHandler);

4.2. HandlerCollection

Für komplexe Anwendungen können wir sogar mehr als einen Handler mit der KlasseHandlerCollectionangeben.

Angenommen, wir haben zwei benutzerdefinierte Handler implementiert. Der erste führt nur Protokollierungsvorgänge durch, während der zweite erstellt und eine tatsächliche Antwort an den Benutzer zurücksendet. Wir möchten jede eingehende Anfrage mit beiden in dieser Reihenfolge bearbeiten.

So geht's:

Handler handlers = new HandlerCollection();
handlers.addHandler(loggingRequestHandler);
handlers.addHandler(customRequestHandler);
server.setHandler(handlers);

5. Anschlüsse

Als Nächstes möchten wir konfigurieren, an welchen Adressen und Ports der Server empfangsbereit ist, und ein Zeitlimit für Inaktivität hinzufügen.

Die KlasseServerdeklariert zwei Convenience-Konstruktoren, die zum Binden an einen bestimmten Port oder eine bestimmte Adresse verwendet werden können.

Obwohl dies bei kleinen Anwendungen in Ordnung sein mag, reicht es nicht aus, wenn wir mehrere Verbindungen an verschiedenen Sockets öffnen möchten.

In dieser Situation stellt Jetty die SchnittstelleConnectorund insbesondere die KlasseServerConnectorbereit, mit der verschiedene Verbindungskonfigurationsparameter definiert werden können:

ServerConnector connector = new ServerConnector(server);
connector.setPort(80);
connector.setHost("169.20.45.12");
connector.setIdleTimeout(30000);
server.addConnector(connector);

Mit dieser Konfiguration lauscht der Server am 169.20.45.12:80. Jede unter dieser Adresse hergestellte Verbindung hat eine Zeitüberschreitung von 30 Sekunden.

Wenn wir andere Sockets konfigurieren müssen, können wir andere Anschlüsse hinzufügen.

6. Fazit

In diesem kurzen Tutorial haben wir uns darauf konzentriert, wie Sie einen eingebetteten Server mit Jetty einrichten. Wir haben auch gesehen, wie weitere Konfigurationen mitHandlers undConnectors durchgeführt werden können.

Wie immer befindet sich der gesamte hier verwendete Code inover on GitHub.