使用嵌入式Jetty提供部分内容

时间:2014-02-10 21:31:27

标签: java html5 jetty embedded-jetty

我在我的java应用程序中嵌入了Jetty 9,如下所示:

    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(ok)和一些标题值,如Content-Length,Accept-Ranges,Content-Range等。 是否有任何处理程序这样做?

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 我用过这个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,"/*");

在我的代码中,我还在构造函数中添加了媒体文件的路径,因为它们不在公共文件夹中。

如果您找到更优雅的解决方案,请告诉我。