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 2018/08/20 07:39:16 UTC

[17/19] jena git commit: Refactoring: Make ServletContext separately from the Jetty server.

Refactoring: Make ServletContext separately from the Jetty server.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2cd26a8e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2cd26a8e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2cd26a8e

Branch: refs/heads/master
Commit: 2cd26a8e462a3c03e024c5c34ac3b5432b7cb4c8
Parents: 08ef457
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Aug 17 23:45:36 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Aug 17 23:46:37 2018 +0100

----------------------------------------------------------------------
 .../jena/fuseki/embedded/FusekiServer.java      | 29 +++++++++++---------
 1 file changed, 16 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2cd26a8e/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index 3c84fd3..2406e33 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -468,27 +468,30 @@ public class FusekiServer {
          * Build a server according to the current description.
          */
         public FusekiServer build() {
-            ServletContextHandler handler = buildServletContext(contextPath);
+            ServletContextHandler handler = buildFusekiContext();
+            // Use HandlerCollection for several ServletContextHandlers and thus several ServletContext.
+            Server server = jettyServer(port, loopback);
+            server.setHandler(handler);
+            return new FusekiServer(port, server);
+        }
 
+        /** Build one configured Fuseki in one unit - same ServletContext, same dispatch ContextPath */  
+        private ServletContextHandler buildFusekiContext() {
+            ServletContextHandler handler = buildServletContext(contextPath);
             ServletContext cxt = handler.getServletContext();
             Fuseki.setVerbose(cxt, verbose);
             servletAttr.forEach((n,v)->cxt.setAttribute(n, v));
             // Clone to isolate from any future changes.
             ServiceDispatchRegistry.set(cxt, new ServiceDispatchRegistry(serviceDispatch));
             DataAccessPointRegistry.set(cxt, new DataAccessPointRegistry(dataAccessPoints));
-
-            // Start services.
-            DataAccessPointRegistry.get(cxt).forEach((name, dap)->dap.getDataService().goActive());
-
             setMimeTypes(handler);
             servlets(handler);
-
-            Server server = jettyServer(port, loopback);
-            server.setHandler(handler);
-            return new FusekiServer(port, server);
+            // Start services.
+            DataAccessPointRegistry.get(cxt).forEach((name, dap)->dap.getDataService().goActive());
+            return handler;
         }
-
-        /** Build a ServletContextHandler with the Fuseki router : {@link FusekiFilter} */
+        
+        /** Build a ServletContextHandler */
         private ServletContextHandler buildServletContext(String contextPath) {
             if ( contextPath == null || contextPath.isEmpty() )
                 contextPath = "/";
@@ -500,7 +503,6 @@ public class FusekiServer {
             context.setContextPath(contextPath);
             if ( securityHandler != null )
                 context.setSecurityHandler(securityHandler);
-
             return context;
         }
 
@@ -533,6 +535,7 @@ public class FusekiServer {
             context.setMimeTypes(mimeTypes);
         }
 
+        /** Add servlets and servlet filters, including the {@link FusekiFilter} */ 
         private void servlets(ServletContextHandler context) {
             // Fuseki dataset services filter
             // This goes as the filter at the end of any filter chaining.
@@ -565,7 +568,7 @@ public class FusekiServer {
             context.addFilter(h, pathspec, null);
         }
 
-        /** Jetty server */
+        /** Jetty server with one connector/port. */
         private static Server jettyServer(int port, boolean loopback) {
             Server server = new Server();
             HttpConnectionFactory f1 = new HttpConnectionFactory();