Création et configuration du serveur Jetty 9 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 servlets conçus pour être légers et facilement intégrables. Nous verrons comment installer et configurer une ou plusieurs instances du serveur.

2. Dépendances de Maven

Pour commencer, nous voulons ajouter Jetty 9 avec les dépendances Maven suivantes dans notre pom.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

Faire tourner un serveur intégré avec Jetty est aussi simple que d'écrire:

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

L'arrêter est tout aussi simple:

server.stop();

4. Manutentionnaires

Maintenant que notre serveur est opérationnel, nous devons lui indiquer quoi faire avec les demandes entrantes. Cela peut être effectué à l'aide de l' interface Handler .

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 classe WebAppContext 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 sous 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 à l'aide de la classe HandlerCollection .

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

La prochaine chose que nous voulons faire est de configurer les adresses et les ports sur lesquels le serveur écoutera et d'ajouter un délai d'inactivité.

La classe Server 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 différentes sockets.

Dans cette situation, Jetty fournit l' interface Connector et plus précisément la classe ServerConnector 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 169.20.45.12:80. Chaque connexion établie sur cette adresse aura un timeout de 30 secondes.

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

6. Conclusion

Dans ce tutoriel rapide, nous nous sommes concentrés sur la configuration d'un serveur intégré avec Jetty. Nous avons également vu comment effectuer d'autres configurations à l'aide de gestionnaires et de connecteurs .

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