java - 如何在提供文件之前使用嵌入式 Jetty 转换文件?

标签 java jetty embedded-jetty

这是我用来从带有嵌入式 Jetty 的文件系统提供静态文件的代码。

    String directory = "dir";
    final ContextHandler contextHandler = new ContextHandler();
    final ResourceHandler resourceHandler = new ResourceHandler();
    contextHandler.setContextPath("/" + directory);
    resourceHandler.setBaseResource(Resource.newResource(new File(directory,
                directory);
    contextHandler.setHandler(resourceHandler);

我如何修改它以在提供文件之前转换文件?

我想继续使用 ResourceHandler 和 ContextHandler 以避免在这些类中重新实现有用的逻辑。

谢谢!

最佳答案

ResourceHandler 不支持在流中(动态)修改内容。

ResourceHandler 经过优化以尽可能高效地发送文件,通常使用内存映射文件缓冲区,将文件直接从磁盘提供给网络,接下来不对 Java 内存中的文件进行缓冲区处理。

你有两个选择:

  1. 在单独的步骤或过程中(不是即时)修改磁盘上的文件
  2. 编写您自己的文件服务处理程序,可以动态修改文件。

您可以使用 FastFileServer example来自 Jetty git 存储库作为选择 #2 的良好起点。

关于java - 如何在提供文件之前使用嵌入式 Jetty 转换文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859522/

相关文章:

java - 在没有默认构造函数的内部类时使用 Jackson 解码 JSON

java - 将 "Selector modules"与 DataMovement SDK MarkLogic 结合使用 [Java] [MarkLogic] [dmsdk] [data-movement-sdk][ml-java-api]

java - Google Guice & Jersey 在应用程序包过滤时对同一个 servlet 的多个 URL 模式

java - 如何使用嵌入式 jetty 在给定地址提供特定类路径资源?

java - 当我创建新内容时不要生成 TODO eclipse

java - 为什么我无法在 java Stream 的代码中使用收集器?

spring - 嵌入式 Jetty 无法识别 Spring MVC 安全性

java - 向api提交数据时的GSM扩展字符编码问题

java - OkHttp如何获取Json字符串?

java - Jetty:如何嵌套HandlerWrapper、HandlerList、ContextHandlerCollection、ContextHandler