【问题标题】:OSGi HTTP Bundle - Bind to two portsOSGi HTTP Bundle - 绑定到两个端口
【发布时间】:2013-12-03 03:54:44
【问题描述】:

我正在使用 Apache Felix HTTP Jetty 包。我可以启动 servlet 容器/HttpService 并使用系统属性将其分配给端口

org.osgi.service.http.port=8080

但我希望有两个这样的服务,绑定到两个不同的端口,例如我的应用程序 API 应该在 8080 上提供服务,但一些静态网页应该在端口 80 上提供服务。

  • 如何在不同的端口上再次启动 HTTP 服务?
  • 注册servlet时,如何知道哪个服务绑定了哪个端口?

编辑:对于最后一个问题,服务带有在属性中设置的端口值 org.osgi.service.http.port: 8080

【问题讨论】:

    标签: http osgi port apache-felix


    【解决方案1】:

    Felix http.jetty 3.2.6 提供了一个 ManagedServiceFactory,可以轻松创建多个不同配置的 http 实例。

    【讨论】:

      【解决方案2】:

      如果 Apache Felix HTTP Jetty 捆绑包公开了 ManagedServiceFactory,我相信您可以做到。 (编辑:它没有)

      How to support virtual hosts with OSGI HttpService

      http://www.codeaffine.com/2011/10/05/raprwt-osgi-integration-ii/

      如果我明白了,魔法就在这里:

      http://www.osgi.org/javadoc/r2/org/osgi/service/cm/ConfigurationAdmin.html#createFactoryConfiguration(java.lang.String)

      如果您使用托管服务工厂的 pid 创建和注册配置,它将使用新的 Pid 创建一个新的 HttpService 实例。

      【讨论】:

      • 如果托管服务工厂服务在您支持多个 Http 服务的情况下会很有用,但我找不到任何说明 Apache Felix Http Jetty 服务器支持此功能的文档。在我的设置中,元类型表明配置是单例,而不是工厂。
      • eclipselabs (code.google.com/a/eclipselabs.org/p/osgi-http-service-utils) 的项目看起来很有希望...会尝试一下。
      • @PeterKriens 你是正确的 Apache Felix HTTP Jetty 包没有公开工厂 pid。
      【解决方案3】:

      如果您切换到 Pax-Web,您将能够做类似的事情。 Pax-Web 支持虚拟主机,让您将某个应用程序绑定到单个连接。有关如何使用它的更多详细信息,您可以在我的两篇博文中找到:
      Bind web applications to specific http connectors - part 1
      Bind web applications to specific http connectors - part 2

      【讨论】:

      • 在 Pax-Web 中,使用码头连接器(获取多个端口)是否需要拥有完整的 Web 应用程序,或者我也可以只在 HttpService 中使用简单的 servlet 注册?
      • 您将需要增强的 http 服务、webcontainer 服务,因此最好至少同时运行白板扩展器,让您的注册生活更轻松。请参阅第二个示例,尤其是代码示例:github.com/ops4j/org.ops4j.pax.web/blob/master/samples/…
      【解决方案4】:

      据我所知,这对于我使用过的 OSGi 中的 Http 服务器是不可能的。在端口之间创建一个小转发器在 Java 中当然很容易。

      【讨论】:

      • 坏消息。我认为这是 ManagedServiceFactory 的用例 - 可以启动许多具有不同配置的服务。
      猜你喜欢
      • 2016-08-12
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多