我们试图解决的任务是使用HttpService.registerResources()方法Cache-Control
为在 OSGi 环境中公开的静态资源(例如)设置自定义响应标头。
考虑到以下细节,实现这一目标的最佳方式是什么:
- 基于“资源”服务集可能有大量资源注册。这些 OSGi 服务提供有关它们所在的静态资源路径和捆绑包的信息。我们预计的资源路径注册量在 50 到 200 之间。
- 实现应该是 OSGi 友好的。Pax Web 扩展的使用是可以接受的。
- 实现应该与 Web 服务器无关(例如,没有关于 Jetty 的直接知识)。
我们想到的解决方案是:
在HttpContext.handleSecurity中设置响应头
- 这种方法的缺点是处理安全的方法还将负责与安全无关的逻辑。
registerResource()
使用与资源 URI 相同的 URI为每个调用注册过滤器。过滤器将是设置响应标头的响应。- 这种方法的缺点是可能有太多的过滤器用于相同的目的。但到目前为止,这似乎是最简单的解决方案。
如果请求 URI 对应于已知资源 URI 路径,则在根路径上注册一个过滤器并将其配置为设置响应标头。
- 这种方法的缺点是必须对过滤器进行教育以了解资源路径,这意味着实现更复杂一些。
我们渴望听到有关建议解决方案的意见并了解其他替代方案。