|
Cyrano est en |
Cyrano implémente MicroProfile Rest Client 4.0 strictement. Migrer suppose d’aligner les annotations sur la spec et d’abandonner les extensions propriétaires des implémentations existantes.
Depuis SmallRye Rest Client
SmallRye est l’implémentation utilisée par Quarkus et WildFly. Sa fidélité à la spec est haute ; le portage est conceptuellement direct.
| SmallRye | Cyrano | Note |
|---|---|---|
|
|
Annotation identique (spec MP). |
|
|
Identique. |
|
|
Identique. Résolution via |
Transport |
|
Pas de configuration Vert.x. Les paramètres de connection-pool Vert.x n’ont pas d’équivalent — le pool est interne à |
|
Pas d’équivalent dans Cyrano |
Utiliser Heisenberg (MP Fault Tolerance) en complément. |
Propagation OpenTelemetry via SmallRye OTel |
Via Humboldt côté serveur + propagator W3C |
À documenter. |
|
|
Bascule de namespace. Les clés MP Config officielles sont préservées. |
|
Idem |
Identique. |
Dev mode (recharge à chaud) |
Cycle Maven standard |
Pas d’équivalent dev mode pour le moment. |
Depuis RESTEasy Microprofile Rest Client
RESTEasy expose la même API MP Rest Client avec une couche d’extensions propriétaires.
| RESTEasy | Cyrano | Note |
|---|---|---|
|
|
Identique. |
Transport |
|
Zéro dépendance externe. Pas de configuration Apache HC à porter — la |
|
Pas supporté |
Multipart non couvert par MP Rest Client 4.0. |
|
|
L’API fluent JAX-RS Client n’est pas le mode opératoire MP Rest Client (interface typée uniquement). |
|
Idem |
Identique. |
|
|
Le client Cyrano est un proxy d’interface, pas un |
Filtres |
Filtres |
Standard JAX-RS — déclarations identiques. |
Logging via |
|
Pas d’API listener globale — Cyrano se conforme strictement à la spec. |
Depuis Jakarta REST Client (sans MicroProfile)
Le mode jakarta.ws.rs.client.Client + WebTarget est fluent et impératif ; Cyrano est déclaratif via interface. Le portage demande un effort plus important.
| Jakarta REST Client | Cyrano | Note |
|---|---|---|
|
Interface |
Refactor obligatoire — extraire chaque appel HTTP dans une méthode d’interface annotée. |
Création d’instance par appel |
Un proxy par client, partagé |
Bonus : pas de fuite de connexion, |
|
Méthode retournant |
Sémantique identique, signature plus naturelle. |
Configuration impérative |
Annotations + MP Config |
Plus déclaratif, plus testable. |
Pour préserver l’usage jakarta.ws.rs.client.Client dans des cas marginaux (URL totalement dynamique, par exemple), il reste autorisé d’instancier un Client JAX-RS standard en parallèle de Cyrano — les deux coexistent.
Pièges connus
-
module-info.java— penser à ajouterrequires io.vidocq.cyrano.mp.rest.client.api;etopens com.example.dto to jakarta.json.bind;pour les DTO. C’est la première source d'`InaccessibleObjectException`. -
Repackage de la spec — ne pas importer directement
microprofile-rest-client-api(module automatique → incompatible jlink). Toujours passer parcyrano-mp-rest-client-api. -
MP Config requis pour
<configKey>/mp-rest/url— sans Ravel (ou autre impl), seule l’annotation@RegisterRestClient(baseUri=…)fonctionne. -
Async + contexte CDI — la propagation de
@RequestScopeddans unCompletionStagen’est pas encore complète (voir TCK §AsyncMethodTest). Préférer du sync sur virtual thread tant que M4-6 n’est pas livré.
Aller plus loin
-
Démarrage rapide — premier client typé en moins de 50 lignes.
-
Concepts — vocabulaire MP Rest Client.
-
TCK — état de conformité courant.