Felix OSGi Web控制台和Grizzly HTTP服务器(HTTP端口冲突)

Felix OSGi Web控制台和Grizzly HTTP服务器(HTTP端口冲突),osgi,apache-felix,grizzly,Osgi,Apache Felix,Grizzly,当我的Felix(OSGi)启动时,它会启动Felix Web控制台包。此捆绑包使用Jetty,Jetty使用felix属性org.osgi.service.http.port来确定要使用的http端口号 我在OSGi上开发的一个捆绑包需要Grizzly处理WebSocket等,因此,OSGi也启动的捆绑包之一是Grizzly OSGi HTTP服务器捆绑包。它将web服务器连接到org.osgi.service.HTTP.port中定义的HTTP端口 这会导致HTTP端口发生冲突。dilema

当我的Felix(OSGi)启动时,它会启动Felix Web控制台包。此捆绑包使用Jetty,Jetty使用felix属性
org.osgi.service.http.port
来确定要使用的http端口号

我在OSGi上开发的一个捆绑包需要Grizzly处理WebSocket等,因此,OSGi也启动的捆绑包之一是Grizzly OSGi HTTP服务器捆绑包。它将web服务器连接到
org.osgi.service.HTTP.port
中定义的HTTP端口

这会导致HTTP端口发生冲突。dilema,我需要Felix网络控制台和Grizzly。就我所关心的而言,灰熊可以在不同的por上跑步。但它似乎缺乏实现这一任务的手段


以前有人有过这个问题吗?来自的这个问题反映了这个问题,而且Grizzly团队似乎已经解决了这个问题,因为我使用的是最新版本2.3.18,我不明白为什么我会面临这个问题。

在调查了这个HTTP端口冲突问题之后。我很好奇为什么Felix Web控制台特别需要Jetty。所以我决定从Felix中删除Felix Web控制台捆绑包,并从Maven Central及其依赖项下载了它

在这个过程中,我没有看到任何对Jetty的依赖,所以我猜是我错误地将Jetty包含在Felix Web控制台中

这样做之后,FelixWeb控制台似乎与Grizzly Http服务相处得非常好

出于好奇,我决定研究Felix Web控制台代码,在它们的代码中有一个名为OsgiManager的类。这个聪明的类将FelixWeb控制台绑定到找到的第一个HTTP服务

这就是为什么HTTP服务在默认情况下看起来像OSGi属性
org.OSGi.service.HTTP.port
。Felix中一次应该只存在一个HTTP服务,这是有道理的。因此,因为我删除了我认为与Felix Web控制台相关的Jetty捆绑包,所以一切都开始工作,因为现在Grizzly HTTP服务成为唯一可用的HTTP服务。这就是为什么这一切一开始就奏效了