【问题标题】:OSGi HTTP whiteboard static welcome documentOSGi HTTP 白板静态欢迎文档
【发布时间】:2022-09-29 04:57:23
【问题描述】:

在 OSGi 标准模块(jar,而不是 wab)中,我公开了一些 Web 服务(使用 OSGi JAX-RS 白板)和使用 @HttpWhiteboardResource 的 index.html 静态文件(它本身与 OSGi HTTP 白板一起使用) )。

除了一件愚蠢的事情之外,一切都运行良好:我无法从根目录提供我的 index.html 文件。 (我想做 http://domain,而不是 http://domain/index.html)。

通常对此的解决方案是声明一个“欢迎页面”。唉,OSGi spec for the HTTP whiteboard 似乎不允许这样做。另一个(绝望的)解决方案是将root与@HttpWhiteboardResource.pattern绑定,但它不起作用(似乎合乎逻辑,root归白板所有)。

似乎pax web 可以使用a non-standard extension 解决此问题。但是,我使用的是Apache Felix http,但在他们的代码或文档中找不到对欢迎页面的单一引用。而且我不想改变它,因为它需要在一个非常复杂的解决方案中进行大量测试。

那么有人知道用标准的 OSGi 东西还是 Felix 特定的东西来解决我的问题的方法吗?谢谢!

  • 实际上,OSGi 规范(来自 OSGi CMPN 的 HttpService、Whiteboard 和 WAB 规范)并未涵盖欢迎文件(以及 jsps、SCI、登录配置……)。这就是最初创建 Pax Web 的原因。最近,Pax Web 8 发布了,其中包含许多规范和稳定性改进,因此我建议您尝试一下。参见例如WhiteboardWelcomeFilesTest.java。
  • 谢谢@GrzegorzGrzybek - 我想我毕竟必须尝试 pax 网络路由。我会暂时搁置这个问题,以防费利克斯出现奇迹;-)
  • @GrzegorzGrzybek 如果您想要积分,欢迎您在评论中添加答案 - 这确实是唯一的解决方案。

标签: osgi apache-felix pax-web osgi-http-service


【解决方案1】:

实际上,OSGi 规范(来自 OSGi CMPN 的 HttpService、Whiteboard 和 WAB 规范)并未涵盖欢迎文件(以及 jsps、SCI、登录配置……)。

这就是最初创建 Pax Web 的原因。最近,Pax Web 8 发布了,其中包含许多规范和稳定性改进,因此我建议您尝试一下。参见例如WhiteboardWelcomeFilesTest.java。

【讨论】:

    【解决方案2】:

    只需使用 ServletContextHelper。

    @Component(service = ServletContextHelper.class, scope = 
    ServiceScope.SINGLETON)
    
    @HttpWhiteboardContext(name = WebResServletContextHelper.NAME, path = "/")
    public class MyServletContextHelper extends ServletContextHelper {
    
    public static final String NAME = "My";
    
    @Override
    public URL getResource(String name) {
    
        return super.getResource(name); // name= "/" give your index.html uri back
    }}
    

    和

    @HttpWhiteboardResource(pattern = { "/*" }, prefix = "/")
    @HttpWhiteboardContextSelect("(" + HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME + "="
        + MyServletContextHelper.NAME + ")")
    @Component(service = MyService.class)
    public class MyService {
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 2017-12-27
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多