Веб-консоль Felix OSGi и HTTP-сервер Grizzly (конфликт портов HTTP)

Когда мой Felix (OSGi) запускается, он запускает пакет веб-консоли Felix. Этот пакет использует Jetty, который использует свойство felix org.osgi.service.http.port для определения используемого номера HTTP-порта.

Один из моих пакетов на OSGi, разработанный мной, требует, чтобы Grizzly имел дело с WebSockets и т. д., поэтому один из пакетов, который также запускается OSGi, — это пакет Grizzly OSGi HTTP Server. Который подключает веб-сервер к порту HTTP, определенному в org.osgi.service.http.port.

Это вызывает конфликт портов HTTP. Дилемма, мне нужны и веб-консоль Felix, и Grizzly. Меня беспокоит, что Grizzly может работать на другом порту. Но, похоже, не хватает средств для выполнения этой задачи.

У кого-нибудь была эта проблема раньше? Эта проблема из 2009 отражает эту проблему, и кажется, что команда Grizzly исправила ее, так как я m используя последнюю версию релиза 2.3.18, я не понимаю, почему я столкнулся с этой проблемой.


person João Pinho    schedule 14.02.2015    source источник


Ответы (1)


После изучения этой проблемы с конфликтом портов HTTP. Меня заинтриговало, почему Felix Web Console требует именно Jetty. Поэтому я решил удалить пакет веб-консоли Felix из Felix и загрузил его с Maven Central вместе с его зависимостями.

Во время этого процесса я не видел никакой зависимости от Jetty, поэтому я предполагаю, что по ошибке включил Jetty для обслуживания веб-консоли Felix.

После этого Felix Web Console, кажется, очень хорошо ладит с Grizzly Http Service!

Просто из любопытства я решил изучить код веб-консоли Felix, и в их коде есть класс под названием OsgiManager. Этот умный класс связывает веб-консоль Felix с первой найденной службой HTTP.

Вот почему службы HTTP по умолчанию обращаются к свойству OSGi org.osgi.service.http.port. Предполагается, что в Felix одновременно существует только одна служба HTTP, что имеет смысл. Поэтому, поскольку я удалил свои пакеты Jetty, которые, как мне казалось, были связаны с веб-консолью Felix, все заработало, потому что теперь служба HTTP Grizzly стала единственной доступной службой HTTP. Вот почему все это работало в первую очередь!

person João Pinho    schedule 15.02.2015