Modèle de conception Commande en langage Groovy
Le modèle de conception Commande fait partie des modèles de conception de type comportemental, présenté notamment dans le célèbre livre Design Patterns: Elements of Reusable Object-Oriented Software de Erich Gamma, Richard Helm, Ralph Johnson, et John Vlissides.
Dans cet article, je donnerai un exemple d'implémentation de ce modèle de conception en langage Groovy, dans le style de programmation orientée objet, puis ensuite dans le style de la programmation fonctionnelle, avec beaucoup moins de "cérémonie" (moins de déclarations de type).
MicroProfile REST Client
Faisant partie de la spécification parapluie MicroProfile, la spécification MicroProfile REST Client fournit une approche typée pour appeler des services RESTful sur HTTP, en se basant sur des interfaces Java.
L'objectif ici est de fournir un style de code beaucoup plus naturel, l’implémentation sous-jacente prenant en charge la communication entre le client et le service.
Ainsi, pour invoquer un service distant, on utilise une approche déclarative par la définition d'une interface, avec des méthodes annotées représentant les chemins et opérations du service cible.
Sécuriser un microservice avec MicroProfile JWT Authentication
L'API MicroProfile JWT Authentication 1.1 permet de sécuriser l'accès à une application web comportant des services web REST, au moyen de l'utilisation de jetons suivant la proposition JSON Web Token (RFC 7519) de l'Internet Engineering Task Force (IETF).
Un client d'un service REST est authentifié au moyen d'un jeton JWT, qui est essentiellement une chaîne de caractères JSON composée de trois parties encodées : un en-tête, une charge utile
(comprenant des champs pour spécifier le nom de l'émetteur, la date d'expiration du jeton, etc.), et une signature.
Signé de manière cryptographique, un jeton JWT est vérifiable, et on peut ainsi s'assurer que son contenu n'a pas été altéré ; il peut aussi être transféré vers d'autres services.
MicroProfile 3.3
MicroProfile 3.3 est la dernière version (au moment de l'écriture de cet article) du projet MicroProfile de la fondation Eclipse ; c'est une spécification parapluie qui fournit un ensemble d'API axées sur l'écriture de microservices, afin de permettre une innovation rapide dans l'écosystème Java entreprise.
MicroProfile reprend certaines spécifications de Java/Jakarta EE 8, à savoir CDI, JAX-RS, JSON-B et JSON-P.
Example de microservice MicroProfile Reactive Messaging avec Apache Camel
Disponible depuis juillet dernier en version 1.0, l'API MicroProfile Reactive Messaging permet de développer des applications de flux de données réactifs, des microservices pilotés par des événements, et de mettre en oeuvre des modèles de type event sourcing (cf. MicroProfile Reactive Messaging 1.0 is now available), tout en utilisant un modèle de développement CDI.
Cette spécification est autonome et ne fait pas encore partie de la spécification parapluie MicroProfile.
Enregistrer automatiquement un document WSDL en ligne avec ses dépendances
Lorsqu'une application ou un service expose un service web SOAP et publie son document de description d'interface en ligne, son document WSDL (Web Services Description Language), il peut être pratique d'enregistrer localement ce document, ainsi que tous les documents importés, que ce soit d'autres documents WSDL ou des schémas XML, tout en gardant les liens entre ces documents.
Configurer des applications avec MicroProfile Config
MicroProfile Config est la spécification d'Eclipse MicroProfile définissant un mécanisme d'utilisation souple et extensible de configuration des applications ; au moment de l'écriture de cet article, MicroProfile Config est en version 1.3 et est inclus dans la version 2.2 de MicroProfile.
Au moyen de cette API, on peut accéder à l'ensemble des valeurs configurées pour une application sous la forme d'un ensemble de paires clé/valeur de type chaînes de caractères, et provenant de diverses sources de configuration ; celles-ci peuvent être externes, comme les variables d'environnements, ou internes à l'application, comme des fichiers de propriétés embarqués dans des archives.
Surveiller un microservice MicroProfile avec Prometheus et Grafana
Faisant partie de MicroProfile, l'API Metrics for Eclipse MicroProfile permet à un service REST Java/Jakarta EE d'exposer facilement des métriques, pouvant alors être exploitées à des fins de surveillance ; par défaut, on aura des mesures relatives à l'environnement d'exécution, tandis que l'on pourra également ajouter ses propres mesures au moyen d'annotations proposées par l'API Metrics.
Voeux scriptés avec CompletableFuture
En ce début d'année 2019, j'exprimais sur LinkedIn mes buts pour la nouvelle année, sous la forme d'un script Groovy utilisant l'API CompletableFuture de Java 8 :
MicroProfile 2.1
MicroProfile 2.1 est la dernière version (au moment de l'écriture de cet article) du projet MicroProfile de la fondation Eclipse ; c'est une spécification parapluie qui fournit un ensemble d'API axées sur l'écriture de microservices, afin de permettre une innovation rapide dans l'écosystème Java entreprise.
MicroProfile 2.x reprend certaines spécifications de Java/Jakarta EE 8, à savoir CDI, JAX-RS, JSON-B et JSON-P.