Création et configuration de Jetty 9 Server en Java

Création et configuration de Jetty 9 Server en Java

1. Vue d'ensemble

Dans cet article, nous parlerons de la création et de la configuration d'une instance Jetty par programmation.

Jetty est un serveur HTTP et un conteneur de servlet conçu pour être léger et facilement intégrable. Nous allons voir comment installer et configurer une ou plusieurs instances du serveur.

2. Dépendances Maven

Pour commencer, nous voulonsadd Jetty 9 with the following Maven dependencies dans nospom.xml:


    org.eclipse.jetty
    jetty-server
    9.4.8.v20171121


    org.eclipse.jetty
    jetty-webapp
    9.4.8.v20171121

3. Création d'un serveur de base

Il est aussi simple d’écrire un serveur embarqué avec Jetty:

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

La fermer est également simple:

server.stop();

4. Gestionnaires

Maintenant que notre serveur est opérationnel, nous devons lui indiquer comment utiliser les demandes entrantes. Cela peut être effectué à l'aide de l'interfaceHandler.

Nous pourrions en créer un nous-mêmes, mais Jetty fournit déjà un ensemble d'implémentations pour les cas d'utilisation les plus courants. Jetons un coup d'œil à deux d'entre eux.

4.1. WebAppContext

La classeWebAppContext vous permet de déléguer la gestion des requêtes à une application Web existante. L'application peut être fournie sous forme de chemin de fichier WAR ou de chemin de dossier Webapp.

Si nous voulons exposer une application dans le contexte «myApp», nous écrirons:

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

4.2. HandlerCollection

Pour les applications complexes, nous pouvons même spécifier plusieurs gestionnaires en utilisant la classeHandlerCollection.

Supposons que nous ayons implémenté deux gestionnaires personnalisés. Le premier n'effectue que des opérations de journalisation tandis que le second crée et renvoie une réponse réelle à l'utilisateur. Nous voulons traiter chaque demande entrante avec les deux dans cet ordre.

Voici comment procéder:

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

5. Connecteurs

Nous souhaitons ensuite configurer les adresses et les ports sur lesquels le serveur va écouter et ajouter un délai d'inactivité.

La classeServer déclare deux constructeurs pratiques qui peuvent être utilisés pour se lier à un port ou une adresse spécifique.

Bien que cela puisse convenir avec de petites applications, cela ne suffira pas si nous voulons ouvrir plusieurs connexions sur des sockets différents.

Dans cette situation, Jetty fournit l'interfaceConnector et plus précisément la classeServerConnector qui permet de définir divers paramètres de configuration de connexion:

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

Avec cette configuration, le serveur écoutera le 169.20.45.12:80. Chaque connexion établie sur cette adresse aura un délai d'attente de 30 secondes.

Si nous devons configurer d'autres sockets, nous pouvons ajouter d'autres connecteurs.

6. Conclusion

Dans ce rapide didacticiel, nous avons expliqué comment configurer un serveur intégré avec Jetty. Nous avons également vu comment effectuer d'autres configurations en utilisantHandlers etConnectors.

Comme toujours, tout le code utilisé ici peut être trouvéover on GitHub.