You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2025/12/23 14:30:26 UTC
(jena) 03/03: Extract Servlet404
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
commit b24a742fd75dea9976145efea68d8d937c70c2d6
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Tue Dec 23 10:11:51 2025 +0000
Extract Servlet404
---
.../org/apache/jena/fuseki/main/FusekiServer.java | 34 ++----------
.../apache/jena/fuseki/main/cmds/Servlet404.java | 64 ++++++++++++++++++++++
.../main/sys/FusekiServerArgsCustomiser.java | 7 ++-
3 files changed, 72 insertions(+), 33 deletions(-)
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 847628a599..ed2ddc7e82 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
@@ -20,7 +20,6 @@ package org.apache.jena.fuseki.main;
import static java.util.Objects.requireNonNull;
import static org.apache.jena.atlas.lib.PropertyUtils.loadFromFile;
-import static org.apache.jena.fuseki.Fuseki.serverLog;
import java.io.IOException;
import java.nio.file.Path;
@@ -30,8 +29,6 @@ import java.util.function.Predicate;
import jakarta.servlet.Filter;
import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import org.apache.jena.atlas.json.JSON;
import org.apache.jena.atlas.json.JsonObject;
import org.apache.jena.atlas.lib.FileOps;
@@ -50,6 +47,7 @@ import org.apache.jena.fuseki.auth.AuthPolicy;
import org.apache.jena.fuseki.build.FusekiConfig;
import org.apache.jena.fuseki.ctl.*;
import org.apache.jena.fuseki.main.cmds.FusekiMain;
+import org.apache.jena.fuseki.main.cmds.Servlet404;
import org.apache.jena.fuseki.main.sys.*;
import org.apache.jena.fuseki.metrics.MetricsProvider;
import org.apache.jena.fuseki.mod.prometheus.PrometheusMetricsProvider;
@@ -67,7 +65,6 @@ import org.apache.jena.sparql.util.ContextAccumulator;
import org.apache.jena.sys.JenaSystem;
import org.apache.jena.system.G;
import org.apache.jena.system.RDFDataException;
-import org.apache.jena.web.HttpSC;
import org.eclipse.jetty.ee11.servlet.DefaultServlet;
import org.eclipse.jetty.ee11.servlet.FilterHolder;
import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
@@ -362,7 +359,7 @@ public class FusekiServer {
// Post-start completion. Find the ports.
Connector[] connectors = server.getServer().getConnectors();
if ( connectors.length == 0 )
- serverLog.warn("Start Fuseki: No connectors");
+ Fuseki.serverLog.warn("Start Fuseki: No connectors");
// Extract the ports from the Connectors.
Arrays.stream(connectors).forEach(c->{
@@ -1742,36 +1739,13 @@ public class FusekiServer {
context.addServlet(staticContent, "/");
} else {
// Backstop servlet
- // Jetty default is 404 on GET and 405 otherwise
+ // Jetty default is 404 on GET and 405 (Method not allowed) otherwise
HttpServlet staticServlet = new Servlet404();
ServletHolder staticContent = new ServletHolder(staticServlet);
context.addServlet(staticContent, "/");
}
}
- /** 404 for HEAD/GET/POST/PUT */
- static class Servlet404 extends HttpServlet {
-
- public Servlet404() {}
- // service()?
- @Override
- protected void doHead(HttpServletRequest req, HttpServletResponse resp) { err404(req, resp); }
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) { err404(req, resp); }
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) { err404(req, resp); }
- @Override
- protected void doPut(HttpServletRequest req, HttpServletResponse resp) { err404(req, resp); }
- //protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
- //protected void doTrace(HttpServletRequest req, HttpServletResponse resp)
- //protected void doOptions(HttpServletRequest req, HttpServletResponse resp)
- private static void err404(HttpServletRequest req, HttpServletResponse response) {
- try {
- response.sendError(HttpSC.NOT_FOUND_404, HttpSC.getMessage(HttpSC.NOT_FOUND_404));
- } catch (IOException ex) {}
- }
- }
-
private static void addServlet(ServletContextHandler context, String pathspec, HttpServlet httpServlet) {
ServletHolder sh = new ServletHolder(httpServlet);
context.addServlet(sh, pathspec);
@@ -1804,7 +1778,7 @@ public class FusekiServer {
}
private Server jettyServer(ServletContextHandler handler, String jettyServerConfig) {
- serverLog.info("Jetty server config file = " + jettyServerConfig);
+ Fuseki.serverLog.info("Jetty server config file = " + jettyServerConfig);
Server server = JettyServer.jettyServer(jettyServerConfig);
server.setHandler(handler);
return server;
diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/Servlet404.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/Servlet404.java
new file mode 100644
index 0000000000..cee099a6d7
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/Servlet404.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.apache.jena.fuseki.main.cmds;
+
+import java.io.IOException;
+
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.jena.web.HttpSC;
+
+/** 404 for HEAD/GET/POST/PUT */
+public class Servlet404 extends HttpServlet {
+ public Servlet404() {}
+
+ // service()?
+ @Override
+ protected void doHead(HttpServletRequest req, HttpServletResponse resp) {
+ err404(req, resp);
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
+ err404(req, resp);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
+ err404(req, resp);
+ }
+
+ @Override
+ protected void doPut(HttpServletRequest req, HttpServletResponse resp) {
+ err404(req, resp);
+ }
+
+ // protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
+ // protected void doTrace(HttpServletRequest req, HttpServletResponse resp)
+ // protected void doOptions(HttpServletRequest req, HttpServletResponse resp)
+
+ private static void err404(HttpServletRequest req, HttpServletResponse response) {
+ try {
+ response.sendError(HttpSC.NOT_FOUND_404, HttpSC.getMessage(HttpSC.NOT_FOUND_404));
+ } catch (IOException ex) {}
+ }
+}
diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
index 275a61877b..51e39c9001 100644
--- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
+++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
@@ -44,13 +44,14 @@ import org.apache.jena.rdf.model.Model;
* {@link FusekiAutoModule#start()} or from Java application code.
* </li>
* <li>
- * {@link #serverArgsModify} – Register or modify the argument setup to be
+ * {@link #serverArgsModify} – Called before command line processing.
+ * This call can register or modify the argument setup to be
* used to parse the command line.
* </li>
* <li>
* {@link #serverArgsPrepare} – Called after parsing the command line and
- * recoding the command line settings in {@link ServerArgs}. Customisers can record
- * argument values and flags.
+ * recording the command line settings in {@link ServerArgs}.
+ * Customisers can record argument values and flags.
* </li>
* <li>
* {@link #serverArgsBuilder} – Called after the {@link ServerArgs} have