我将 Jetty 9 嵌入到我的 java 应用程序中,如下所示:
Server server = new Server(8080);
ResourceHandler handler = new ResourceHandler();
handler.setDirectoriesListed(false);
handler.setWelcomeFiles(new String[]{"index.html"});
handler.setResourceBase(System.getProperty("user.home"));
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { handler, new DefaultHandler() });
server.setHandler(handlers);
server.setHandler(handlers);
server.start();
除非将 .ogg 音频文件提供给基于 webkit 的浏览器 Epiphany 或 SWT WebView,否则效果很好。这些浏览器需要响应代码 206(部分)而不是 200(正常)以及一些 header 值,例如 Content-Length、Accept-Ranges、Content-Range 等。 有处理程序这样做吗?
最佳答案
我也遇到了同样的问题。 我用过这个 HttpServlet: https://code.google.com/p/uranged/source/browse/trunk/src/main/java/com/vg/http/MicroRangeServlet.java?r=2
我以这种方式添加了处理,以便它仅用于\media\url:
ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
contextHandler.setContextPath("/media");
org.eclipse.jetty.servlet.ServletHolder holderHome = new org.eclipse.jetty.servlet.ServletHolder(new MicroRangeServlet(config, path+"/media"));
contextHandler.addServlet(holderHome,"/*");
在我的代码中,我还在构造函数中添加了媒体文件的路径,因为它们不在公共(public)文件夹中。
如果您找到更优雅的解决方案,请告诉我。
关于java - 使用嵌入式 Jetty 提供部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688366/