Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Done
-
Jena 4.2.0
-
None
Description
Jena System initialization happens when the application code first touches Jena. It is a one time loading of code and running an start() static function. Additional code can write itself into Jena (e.g. new RDF syntax can register as a parser language, which is what SHACL compact syntax does).
In the Fuseki case, the call to start() is very early. It happens once, and it is before a server is built.
Fuseki modules are dynamically loaded code (JENA-2178 provides a way to use the JDK ServiceLoader in a consistent, general pattern). They have additional functionality in that they get callbacks from within the server creation lifecycle. They get passed details of the build configuration. They can inspect or even modify the structure of the builder or the resulting server.
This is for Fuseki main. The sealed nature of WAR files means adding code requires a repackaging and server building is related to the webapp lifecycle; this has affected the standalone packaging of Fuseki UI which does not have a clearly defined server-build point.
Fuseki main has FusekiServer.Builder.