OSGi的HTTP绑定 - 绑定到两个端口(OSGi HTTP Bundle - Bind to t

2019-10-19 00:42发布

我使用了Apache HTTP菲利克斯捆绑码头。 我可以启动servlet容器/ HttpService的,并使用系统属性将其分配到一个端口

org.osgi.service.http.port=8080

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

  • 我怎样才能启动HTTP服务在不同的端口上的第二次?
  • 当注册的servlet,我怎么能知道哪些服务绑定到哪个端口?

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

Answer 1:

如果您切换到大同的Web,你就可以做类似的东西。 PAX-网络支持虚拟主机,并让您绑定某个应用程序的单一连接。 关于如何使用它,你会在我的两个博客文章找到一些详细信息:
绑定Web应用程序特定的HTTP连接器-第1部分
绑定Web应用程序特定的HTTP连接器-第2部分



Answer 2:

据我知道这是不可能的,我曾经使用过的的OSGi的HTTP服务器。 创建端口之间的小货代当然是很容易用Java做的。



Answer 3:

我相信你可以的,如果在Apache HTTP菲利克斯捆绑码头暴露了ManagedServiceFactory。 (编辑:事实并非如此)

如何支持与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的一个新的实例。



Answer 4:

菲利克斯http.jetty 3.2.6提供ManagedServiceFactory,这使得很容易地创建具有不同配置的多个HTTP实例。



文章来源: OSGi HTTP Bundle - Bind to two ports