|
5 | 5 | import org.apache.commons.cli.DefaultParser;
|
6 | 6 | import org.apache.commons.cli.HelpFormatter;
|
7 | 7 | import org.apache.commons.cli.Options;
|
| 8 | +import org.eclipse.jetty.server.Handler; |
8 | 9 | import org.eclipse.jetty.server.Server;
|
| 10 | +import org.eclipse.jetty.server.handler.ContextHandler; |
| 11 | +import org.eclipse.jetty.server.handler.ContextHandlerCollection; |
| 12 | +import org.eclipse.jetty.server.handler.ResourceHandler; |
| 13 | +import org.eclipse.jetty.servlet.DefaultServlet; |
| 14 | +import org.eclipse.jetty.servlet.ServletContextHandler; |
9 | 15 | import org.eclipse.jetty.servlet.ServletHandler;
|
10 | 16 | import org.eclipse.jetty.servlet.ServletHolder;
|
| 17 | +import org.eclipse.jetty.util.resource.Resource; |
11 | 18 | import org.linkeddatafragments.servlet.LinkedDataFragmentServlet;
|
12 | 19 |
|
13 | 20 | /**
|
@@ -58,23 +65,38 @@ public static void main(String[] args) throws Exception {
|
58 | 65 |
|
59 | 66 | // create a new (Jetty) server, and add a servlet handler
|
60 | 67 | Server server = new Server(port);
|
61 |
| - ServletHandler handler = new ServletHandler(); |
62 |
| - server.setHandler(handler); |
| 68 | + |
| 69 | + // The filesystem paths we will map |
| 70 | + String pwdPath = System.getProperty("user.dir"); |
| 71 | + String assetsPath = pwdPath + "/assets"; |
| 72 | + |
| 73 | + // Setup the basic application "context" for this application at "/" |
| 74 | + // This is also known as the handler tree (in jetty speak) |
| 75 | + ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); |
| 76 | + context.setResourceBase(pwdPath); |
| 77 | + context.setContextPath("/"); |
| 78 | + server.setHandler(context); |
| 79 | + |
| 80 | + // add a simple Servlet at "/dynamic/*" |
| 81 | + ServletHolder holderDynamic = new ServletHolder("dynamic", LinkedDataFragmentServlet.class); |
| 82 | + holderDynamic.setInitParameter(LinkedDataFragmentServlet.CFGFILE, config); |
| 83 | + context.addServlet(holderDynamic, "/*"); |
63 | 84 |
|
64 |
| - // add the TriplePatternFragmentsServlet to the handler |
65 |
| - ServletHolder tpfServletHolder = new ServletHolder(new LinkedDataFragmentServlet()); |
66 |
| - tpfServletHolder.setInitParameter(LinkedDataFragmentServlet.CFGFILE, config); |
67 |
| - handler.addServletWithMapping(tpfServletHolder, "/*"); |
| 85 | + // add special pathspec of "/home/" content mapped to the homePath |
| 86 | + ServletHolder holderHome = new ServletHolder("static-home", DefaultServlet.class); |
| 87 | + holderHome.setInitParameter("resourceBase",assetsPath); |
| 88 | + holderHome.setInitParameter("dirAllowed","true"); |
| 89 | + holderHome.setInitParameter("pathInfoOnly","true"); |
| 90 | + context.addServlet(holderHome,"/assets/*"); |
| 91 | + |
| 92 | + // Lastly, the default servlet for root content (always needed, to satisfy servlet spec) |
| 93 | + // It is important that this is last. |
| 94 | + ServletHolder holderPwd = new ServletHolder("default", DefaultServlet.class); |
| 95 | + holderPwd.setInitParameter("dirAllowed","true"); |
| 96 | + context.addServlet(holderPwd,"/"); |
| 97 | + |
68 | 98 |
|
69 |
| - // TODO: create a servlet to serve assets |
70 |
| - //String assetsPath = System.getProperty("user.dir") + "/assets"; |
71 |
| - //ServletHolder assetsHolder = new ServletHolder(new DefaultServlet()); |
72 |
| - //assetsHolder.setInitParameter("resourceBase", assetsPath); |
73 |
| - //assetsHolder.setInitParameter("dirAllowed","true"); |
74 |
| - //assetsHolder.setInitParameter("pathInfoOnly","true"); |
75 |
| - //handler.addServletWithMapping(assetsHolder,"/assets/*"); |
76 | 99 |
|
77 |
| - |
78 | 100 | // start the server
|
79 | 101 | server.start();
|
80 | 102 | System.out.println("Started server, listening at port " + port);
|
|
0 commit comments