Cassini implémente strictement Jakarta RESTful Web Services 4.0. Si votre application est déjà standard (annotations spec, pas d’API propriétaire), la migration consiste essentiellement à changer les coordonnées Maven du runtime. Cette page documente les pièges et les correspondances.
|
Cassini est en |
Depuis Jersey
| Jersey | Cassini | Note |
|---|---|---|
|
|
Spec standard. Jersey-isms ( |
|
|
|
HK2 bridge ( |
|
Vauban résout l’injection en build-time, pas via HK2. |
|
Pas d’extension propriétaire |
Cassini reste 100 % spec. Bean Validation à brancher manuellement (TODO post-1.0). |
Logging filter |
|
Implémentation à la main (10 lignes — voir cas d’usage). |
// Avant — Jersey + Grizzly
ResourceConfig config = new ResourceConfig().packages("com.example");
GrizzlyHttpServerFactory.createHttpServer(URI.create("http://0.0.0.0:8080/"), config);
// Après — Cassini SE-Bootstrap
SeBootstrap.start(MyApplication.class, SeBootstrap.Configuration.builder()
.host("0.0.0.0").port(8080).build()).toCompletableFuture().join();
Depuis RESTEasy
| RESTEasy | Cassini | Note |
|---|---|---|
|
|
Chemin équivalent en build-time, sans Quarkus. Champollion remplace le binding JSON Quarkus. |
Vert.x transport |
Chappe ( |
Virtual threads natifs, pas d’event-loop. Concurrency model différent — voir fonctionnement interne. |
Weld intégré |
Vauban (Lite) optionnel |
Vauban est CDI 4.1 Lite, pas Full. Vérifier que vous n’utilisez pas de fonctionnalités Full (decorators dynamiques, conversation scope, etc.). |
|
|
Client JAX-RS 4.0 standard désormais livré ( |
Filters |
Identique Jakarta REST 4.0 |
Aucun changement. |
Depuis Helidon REST
Helidon SE 4 expose une API custom (HttpRouting, Handler). Helidon MP utilise Jersey en dessous — la migration est alors équivalente à "depuis Jersey" ci-dessus.
Pour Helidon SE → Cassini, il faut réécrire vers les annotations JAX-RS standard. Cassini ne prétend pas être un moteur "fluent routing" — c’est un moteur Jakarta REST.
Depuis CXF (JAX-RS)
CXF est très proche de la spec. La migration est essentiellement un changement de coordonnées Maven et un retrait des <jaxrs:server> Spring/Blueprint au profit de SeBootstrap.start(…).
Bindings JSON — point d’attention
Jersey et RESTEasy délèguent par défaut à Yasson ou Jackson. Cassini délègue à Champollion :
-
Sérialisation statique : ajouter
champollion-codegen-aptau build pour les types nouveaux. -
Annotations standard
@JsonbProperty,@JsonbDateFormat,@JsonbTypeAdaptersupportées. -
Annotations Jackson (
@JsonProperty,@JsonIgnore…) non supportées — convertir vers JSON-B.
Annotations Jakarta REST 4.0
Toutes les annotations standards sont préservées. Pas de changement attendu sur le code utilisateur si le code source est strictement spec.
Pièges connus
-
Sub-resources locators (
@Pathsur méthode retournant une instance) : supportés. Vérifier les imports si l’application utilisait une variante propriétaire. -
@Suspended AsyncResponse: supporté ; le streaming chunked complet est en jalon M2h (voir TCK). -
SSE backpressure :
CassiniSseEventSinkbufférise pour la 0.1.0 — le streaming au fil de l’eau arrive en M2i. -
Client JAX-RS : un client standard est désormais livré dans
cassini-client(ClientBuilder.newClient(),java.net.http+ virtual threads). Les entités multipart côté client restent limitées — utiliser un client externe pour ces cas en attendant. -
MicroProfile Config / Health / Metrics : à brancher via Vidocq Runtime (orchestrateur) — Cassini seul ne configure pas MP.