Factual reference: published Maven artefacts, exported Java modules, supported Jakarta REST 4.0 annotations, configuration properties.

Maven artefacts

Artefact Role

io.vidocq.cassini:cassini-api:0.3.0

Public SPI: HTTP/transport (CassiniHttpExchange, CassiniHttpAdapter, CassiniStack), BeanProvider, ResourceFactory, and the codegen SPI (ResourceAdapter, RouteProvider, RouteDescriptor, InjectionSupport).

io.vidocq.cassini:cassini-core:0.3.0

JAX-RS engine (Invoker, ResourceScanner, RouteRegistry, MessageBodyRegistry, filters, providers, SSE, multipart) + the adapter generators (RuntimeAdapterGenerator, AdapterRegistry).

io.vidocq.cassini:cassini-client:0.3.0

JAX-RS Client 4.0 — zero-dependency ClientBuilder on java.net.http + virtual threads. Reuses MessageBodyRegistry from cassini-core.

io.vidocq.cassini:cassini-cdi-vauban:0.3.0

BeanProvider adapter that resolves resources through Vauban (BCE CassiniScopeExtension included).

io.vidocq.cassini:cassini-chappe:0.3.0

Reference transport — wires Cassini onto Chappe (HTTP/1.1, H2, virtual threads). Used for the TCK.

io.vidocq.cassini:cassini-jdk-http:0.3.0

Pure JDK transport — com.sun.net.httpserver.HttpServer, no external dependency.

io.vidocq.cassini:cassini-processor:0.3.0

APT annotation processor — generates CassiniAdapter+` / `+CassiniRoutes sources at compile time. AOT-safe.

io.vidocq.cassini:cassini-maven-plugin:0.3.0

Maven plugin (generate goal, bound to process-classes) — pre-generates adapters for external dependency archives.

io.vidocq.cassini:cassini-examples-*

Examples: cassini-examples-chappe (standard SE-Bootstrap), cassini-examples-jdkhttp (direct CassiniStack), cassini-examples-vauban (CDI + SE-Bootstrap).

cassini-tck is not published; it is an in-reactor module gated behind the tck Maven profile — a plain mvn install neither downloads nor runs anything TCK-related. See TCK — runner architecture.

Java modules

Module Exports / Provides

io.vidocq.cassini.api

exports io.vidocq.cassini.spi.http;
exports io.vidocq.cassini.spi.resource;
exports io.vidocq.cassini.spi.bean;
exports io.vidocq.cassini.spi.gen;
uses io.vidocq.cassini.spi.http.CassiniStack.BuilderFactory;
uses io.vidocq.cassini.spi.bean.BeanProvider.Factory;

io.vidocq.cassini.core

One public export: io.vidocq.cassini.runtime (maintenance API for hosts that hot-reload the application in the same JVM — Vidocq dev mode). internal.* is qualified-exported only to cassini.tck, cassini.client, cassini.maven.plugin, cassini.chappe, cassini.jdkhttp. No opens.

exports io.vidocq.cassini.runtime;
provides io.vidocq.cassini.spi.http.CassiniStack.BuilderFactory
    with io.vidocq.cassini.internal.CassiniStackBuilderFactory;
uses io.vidocq.cassini.spi.gen.ResourceAdapter;
uses io.vidocq.cassini.spi.gen.RouteProvider;

io.vidocq.cassini.chappe

exports io.vidocq.cassini.chappe;
provides jakarta.ws.rs.ext.RuntimeDelegate
    with io.vidocq.cassini.chappe.ChappeRuntimeDelegate;

io.vidocq.cassini.jdkhttp

exports io.vidocq.cassini.jdkhttp;
provides jakarta.ws.rs.ext.RuntimeDelegate
    with io.vidocq.cassini.jdkhttp.JdkHttpRuntimeDelegate;

io.vidocq.cassini.cdi.vauban

exports io.vidocq.cassini.cdi.vauban;
provides io.vidocq.cassini.spi.bean.BeanProvider.Factory
    with ...VaubanBeanProviderFactory;
provides ...build.compatible.spi.BuildCompatibleExtension
    with ...CassiniScopeExtension;

io.vidocq.cassini.client

requires io.vidocq.cassini.core, java.net.http;
provides jakarta.ws.rs.client.ClientBuilder
    with ...CassiniClientBuilder;
provides jakarta.ws.rs.ext.RuntimeDelegate
    with ...CassiniClientRuntimeDelegate;
uses jakarta.ws.rs.core.Feature;

io.vidocq.cassini.processor

exports io.vidocq.cassini.processor;
provides javax.annotation.processing.Processor
    with ...CassiniResourceProcessor;
cassini-core deliberately does not expose its CassiniRuntimeDelegate via ServiceLoader — to avoid a collision with the RuntimeDelegate from the active transport (cassini-chappe or cassini-jdk-http).

Supported annotations

@Path, @GET, @POST, @PUT, @DELETE, @PATCH, @HEAD, @OPTIONS, @HttpMethod, @ApplicationPath, @Produces, @Consumes, @PathParam, @QueryParam, @HeaderParam, @CookieParam, @FormParam, @MatrixParam, @BeanParam, @DefaultValue, @Encoded, @Provider, @Priority, @NameBinding, @PreMatching, @Context, @Suspended (async — supported; SSE real-time streaming since M2i, and M2h was dropped as a non-goal — see TCK).

CDI (with cassini-cdi-vauban): @ApplicationScoped, @RequestScoped, @Singleton, @Inject.

Implemented JAX-RS interfaces

Application, SeBootstrap, Configuration, Configurable, UriInfo, Request, HttpHeaders, SecurityContext, Providers, MessageBodyReader, MessageBodyWriter, ContextResolver, ExceptionMapper, ContainerRequestFilter, ContainerResponseFilter, ReaderInterceptor, WriterInterceptor, DynamicFeature, Feature, Sse, SseEventSink, SseBroadcaster, AsyncResponse, CompletionCallback, ConnectionCallback, EntityPart, EntityPart.Builder (multipart §3.5.4).

Client side (cassini-client): Client, ClientBuilder, WebTarget, Invocation, Invocation.Builder, AsyncInvoker, ClientRequestContext, ClientResponseContext, ClientRequestFilter, ClientResponseFilter.

Configuration

Cassini is configured via SeBootstrap.Configuration (standard) or via the CassiniStack.builder() builder (advanced):

Property

Default

Description

host

0.0.0.0

Transport listening interface.

port

0 (auto)

HTTP port. 0 = random free.

rootPath

/

Mount prefix for the Application.

protocol

HTTP

HTTP or HTTPS (depending on transport support).

When Cassini is driven by Vidocq Runtime (the io.vidocq.runtime.extensions.jakartaee.core:vidocq-runtime-cassini-rest-extension extension), the JAX-RS application is mounted on the shared Chappe server through the runtime’s HTTP mount configuration:

Property

Example

Description

vidocq.http.mount.<name>.path

/api

Mount prefix of the JAX-RS application in the Vidocq server.

vidocq.http.mount.<name>.type

restful

Mount type — restful routes the mount to Cassini.

Bugs and benchmarks

  • BUG.md — reproducible issues.

  • BENCH.md — JMH/wrk vs RESTEasy / Jersey / Helidon.