vidocq-runtime-core is the Vidocq Runtime runtime engine. It orchestrates the boot sequence, reads the extension index produced at build time, instantiates the bootstrap class generated by Class-File API, and coordinates startup phases.
Coordinates
Artefact |
|
JPMS module |
|
Source |
|
Responsibilities
-
Read
META-INF/vidocq/extensions.listproduced by the APT processor. -
Load the
RuntimeBootstrapclass synthesised by the Maven plugin. -
Run boot phases in order:
-
Config — MicroProfile Config resolution.
-
Extensions init — invoke
RUNTIME_INITrecorders. -
CDI start — delegate to Vauban (
Vauban.bootstrap()). -
Transport bind — delegate to Chappe via
vidocq-runtime-chappe-webserver-extension. -
Routes register — delegate to Cassini, Foy and Mansart depending on active extensions.
-
-
Manage the shutdown cycle —
SIGTERMpropagates in reverse order, virtual threads drain cleanly.
Entry point
package io.example;
public class App {
public static void main(String[] args) {
io.vidocq.runtime.Vidocq.main(args);
}
}
Vidocq.main is a simple facade. User code does not need a @SpringBootApplication nor an application class — the boot sequence is fully driven by the APT index.
Lifecycle hooks
An extension can subscribe to phases through the SPI:
@BuildStep
ApplicationStartBuildItem onStart(SomeExtensionContext ctx) {
// contribute a build step triggered at RUNTIME_INIT
return new ApplicationStartBuildItem();
}
ApplicationStartBuildItem and ApplicationStopBuildItem are SymbolicBuildItem types — no payload, only a marker semantic.