diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java index 11f3a4a5863..15510439a00 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java @@ -202,8 +202,6 @@ public static boolean getVerbose(ServletContext cxt) { // HTTP response header inserted to aid tracking. public static String FusekiRequestIdHeader = "Fuseki-Request-Id"; - private static boolean initialized = false; - // Server start time and uptime. private static final long startMillis = System.currentTimeMillis(); // Hide server locale @@ -228,12 +226,14 @@ public static String serverStartedAt() { return startDateTime; } + private static boolean initialized = false; /** * Initialize an instance of the Fuseki server stack. * This is not done via Jena's initialization mechanism * but done explicitly to give more control. - * Touching this class causes this to happen - * (see static block at the end of this class). + * It is done after Jena initializes. + * Fuseki-main adds a Fuseki specific custom initialization + * round after this is run. */ public synchronized static void init() { if ( initialized ) diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java index 19e6c1028bd..64f9c157c6a 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java @@ -94,8 +94,6 @@ public class FusekiConfig { Operation.GSP_RW, Operation.Patch); - static { Fuseki.init(); } - /** Convenience operation to populate a {@link DataService} with the conventional default services. */ public static DataService.Builder populateStdServices(DataService.Builder dataServiceBuilder, boolean allowUpdate) { Set endpoints = new HashSet<>(); diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java index bd7c94becc4..87316506d8b 100644 --- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java +++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java @@ -59,9 +59,13 @@ public static Collection names(FusekiServer server) { /** * Process a configuration mode to find the DataServices and reset the server * {@link DataAccessPointRegistry}. The only server-level setting processed is - * the {@code fuseki:services} list. Other settings are ignored. + * the {@code fuseki:services} list; other settings are ignored. */ public static void reload(FusekiServer server, Model configuration) { + // See also FusekiServer.applyDatabaseSetup + // prepareDataServices(dapRegistry, operationReg); + // OperationRegistry.set(servletContext, operationReg); + // DataAccessPointRegistry.set(servletContext, dapRegistry); DataAccessPointRegistry newRegistry = new DataAccessPointRegistry(); OperationRegistry operationRegistry = server.getOperationRegistry(); diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java index ab4fd05bac0..62eddff7799 100644 --- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java +++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java @@ -113,7 +113,10 @@ */ public class FusekiServer { - static { JenaSystem.init(); } + static { + JenaSystem.init(); + Fuseki.init(); + } /** * Construct a Fuseki server from command line arguments. @@ -1370,7 +1373,6 @@ public FusekiServer build() { boolean hasFusekiSecurityHandler = applySecurityHandler(handler); // Prepare the DataAccessPointRegistry. // Put it in the servlet context. - // This would be the reload operation. applyDatabaseSetup(handler.getServletContext(), dapRegistry, operationReg); // Must be after the DataAccessPointRegistry is in the servlet context. @@ -1464,8 +1466,8 @@ private static void applyDatabaseSetup(ServletContext servletContext, DataAccessPointRegistry dapRegistry, OperationRegistry operationReg) { // Final wiring up of DataAccessPointRegistry + // See also FusekiLib.reload() prepareDataServices(dapRegistry, operationReg); - OperationRegistry.set(servletContext, operationReg); DataAccessPointRegistry.set(servletContext, dapRegistry); } diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java index 998c79b9799..93b691971c5 100644 --- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java +++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java @@ -163,6 +163,7 @@ public static FusekiServer.Builder builder(String... args) { static void run(String... argv) { JenaSystem.init(); + Fuseki.init(); new FusekiMain(argv).mainRun(); }