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

标签 java html jetty embedded-jetty

我将 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/

相关文章:

java - 用于在音频文件中转录语音的开源软件

java - Spring框架中的缓存线程池

javascript - jQuery css() 函数更改 'a' 属性而不是 'a:hover' 属性

javascript - 在 Javascript 中为按钮添加 ID

java - 使用 Maven 导出 .jar 时出现 NoClassDefFoundError

java - 倒计时方法

java - 选项卡内的 android webView 始终适合全屏

css - 如何在我的网站上获得大于 500 像素(宽度)的 Facebook 事件提要

Java Spring MVC + Jetty Websocket 不兼容的方法签名

java - 如何在没有 web.xml 的情况下应用 ContainerRequestFilter?