|
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