vidocq-runtime-core est le moteur d’exécution de Vidocq Runtime. Il orchestre la séquence de boot, lit l’index des extensions produit au build, instancie le bootstrap généré par Class-File API et coordonne les phases de démarrage.
Coordonnées
Artefact |
|
Module JPMS |
|
Source |
|
Responsabilités
-
Lire
META-INF/vidocq/extensions.listproduit par l’APT processor. -
Charger la classe
RuntimeBootstrapsynthétisée par le plugin Maven. -
Exécuter les phases de boot dans l’ordre :
-
Config — résolution MicroProfile Config.
-
Extensions init — invocation des
RUNTIME_INITrecorders. -
CDI start — délégation à Vauban (
Vauban.bootstrap()). -
Transport bind — délégation à Chappe via l’extension
vidocq-runtime-chappe-webserver-extension. -
Routes register — délégation à Cassini, Foy et Mansart selon les extensions actives.
-
-
Gérer le cycle d’arrêt —
SIGTERMpropage dans l’ordre inverse, drainage propre des virtual threads.
Point d’entrée
package io.example;
public class App {
public static void main(String[] args) {
io.vidocq.runtime.Vidocq.main(args);
}
}
Vidocq.main est une simple façade. Le code utilisateur n’a pas besoin de @SpringBootApplication ni de classe d’application — la séquence de boot est entièrement pilotée par l’index APT.
Lifecycle hooks
Une extension peut s’abonner aux phases via la SPI :
@BuildStep
ApplicationStartBuildItem onStart(SomeExtensionContext ctx) {
// contribuer un build step déclenché à RUNTIME_INIT
return new ApplicationStartBuildItem();
}
ApplicationStartBuildItem et ApplicationStopBuildItem sont des SymbolicBuildItem — ils n’ont pas de payload, seulement une sémantique de marqueur.
Threading
Le boot lui-même est volontairement séquentiel sur un thread plateforme (diagnostic plus simple, traces de pile lisibles). Les seuls virtual threads créés pendant le boot sont :
Pour aller plus loin
-
Fonctionnement interne — séquence détaillée avec diagramme
-
SPI — interfaces consommées par le core