Inovia Blog

L’actualité des technologies innovantes

Présentation de Dropwizard

Par Kadda SAHNINE

Publié le | 16 janvier 2015 |

Sommaire :

Dropwizard

Dropwizard est un framework Java léger adapté au développement rapide de microservices REST et ne nécessitant pas de serveur d’application comme environnement d’exécution.

Cela dit, au delà du framework, c’est surtout un assemblage habile de composants spécialisés parmi les meilleurs de l’écosystème Java :

  • Jetty, un serveur HTTP et un moteur de servlet compacts et très performants
  • Jersey, l’implémentation de référence de la spécification JAX-RS (web services REST)
  • Jackson, une librairie de sérialisation/dé-sérialisation JSON
  • Hibernate Validator, l’implémentation de référence de l’API Bean Validation (JSR 303)
  • SLF4J et Logback pour la gestion des traces
  • Metrics pour le monitoring
  • jDBI pour l’interfaçage rapide à une base de données relationnelle. Cette librairie est de bien plus bas niveau que JPA ou Hibernate et présente peu d’abstraction ce qui rend sa prise en main aisée

On peut considérer ce projet comme une alternative crédible aux serveurs d’applications Java EE perçus comme lourds, compliqués et gourmands en ressources. Le champ des applications couvert par Dropwizard est en réalité plus vaste que celui des microservices (il est tout a fait possible de développer une IHM web) mais l’aisance avec laquelle on développe et déploie un service REST en fait une solution très adaptée à ce type d’usage (à l’instar de Spring Boot de Pivotal ou Spark avec lesquels il est en compétition).

Packagée sous la forme d’un jar autonome contenant toutes ses dépendances, l’unité de déploiement n’a pas besoin de serveur d’application pour être exécutée (le conteneur Jetty est embarqué dans le jar). Avec ses 10 Mo tout au plus (dépendances comprises) l’empreinte mémoire d’une application Dropwizard est donc incomparablement plus faible qu’un Web Service SOAP déployé dans un serveur d’application Java EE (jusqu’à plusieurs centaines de Mo).
Conséquemment, le temps de démarrage d’une application Dropwizard est de quelques secondes quand il faut parfois plusieurs minutes pour un serveur d’application.

Structure type d’une application

Le schéma ci-dessous décrit les principaux éléments d’une application Dropwizard de type API RESTful :

Architecture


Les composants mis en oeuvre sont les suivants :

  • Configuration : le gestionnaire de configuration permet l’accès aux paramètres externalisés dans le fichier de configuration de l’application, représenté sur le schéma par le fichier conf.yml au format YAML
  • Ressource : la ressource (au sens REST du terme) est l’implémentation d’un service JAX-RS (Jersey).
  • ExceptionMapper : c’est une fontionnalité de Jersey. Ce composant (facultatif) permet de traiter une exception de manière globale en retournant, lorsqu’elle est levée, une réponse HTTP au format souhaité (JSON le plus souvent) et associée à un code HTTP correspondant à vos besoins.
  • HealthCheck : facultatives mais fortement conseillées, ce sont dans ces classes que l’on implémente les tests de disponibilité de toutes les ressources nécessaires à la bonne exécution de l’application. Le “bilan de santé” de l’application est consultable par simple interrogation de la ressource GET /healthcheck?pretty=true.
  • Application : c’est la classe main assemblant le tout (enregistrement des ressources, exception mappers, configuration, health checkers).

L’écosystème de DropWizard

A ce jour, la dernière version stable est la 0.7.1. Il est important de noter que cette version est liée à Jersey 1.8 (JAX-RS 1.1) et n’est pas compatible avec Jersey 2.0 (JAX-RS 2.0). On ne pourra donc malheureusement pas tirer parti, entre autre, des validateurs de méthode de resources REST.
Néanmoins, il existe un fork de Dropwizard intégrant Jersey 2.7 mais il s’agit d’une branche expérimentale.

Note 08 Mars 2015 : Jersey 2 est désormais supporté depuis la version 0.8 publiée le 05 Mars 2015.

Dropwizard est un framework modulaire et extensible dont l’étude du module central (Dropwizard Core) a fait l’objet de cet article.
Parmi les modules officiels intéressants, citons :

Il existe également de nombreuses contributions officieuses. Citons entre autre :

Dans le prochain billet de la série, nous verrons comment développer un service de consultation du trafic métro RATP en temps-réel avec Dropwizard.

Abonnez vous !
  • RSS
  • Yahoo
  • Netvibes

Suivez l'auteur sur Twitter !
  • Suivre sur Twitter

A propos de l'auteur

Kadda SAHNINE
Architecte technique Java EE
#JavaEE #Linux #vim addict #OpenSoftware #OpenHardware
Voir le profil de Kadda Sahnine sur LinkedIn

Flux RSS

Rechercher

Administration