Как использовать R-Osgi для получения удаленного «экспортированного пакета»? - PullRequest
1 голос
/ 14 октября 2011

R-Osgi предоставляет нам способ вызова службы из удаленного контейнера OGSi. Сайт: http://r -osgi.sourceforge.net .

Я новичок в R-OSGi, и теперь я хочу разделить свой контейнер OSGi на маленькие и взаимодействовать друг с другом с помощью R-Osgi, потому что он слишком большой. Но, похоже, R-OSGi предоставляет только способ для зарегистрированного обслуживания. Мы знаем, что наиболее популярный способ взаимодействия между двумя пакетами, помимо Service, также широко используется «exported-package».

Итак, кто-нибудь знаком с R-OSGi и знает, как использовать «экспортированный пакет» из удаленного контейнера OSGi?

Спасибо за любой ответ.

1 Ответ

2 голосов
/ 14 октября 2011

Если вы подумаете об этом, попытка обработать удаленный импорт / экспорт пакетов очень сложна, хрупка и подвержена ошибкам; вам нужно будет отправить все события жизненного цикла пакета по проводам и записать их в импортирующую систему (что потребует кэширования).

Кроме того, фреймворк должен знать заранее, чтобы использовать эти определения классов (вы не можете создать экземпляр класса, который ссылается на классы, которые недоступны вашему загрузчику классов). Загрузчик классов удаленного пакета может зависеть от классов из другого загрузчика классов, эта цепочка может вращаться и обходить сеть, что делает загрузку классов длительностью.

Поставь другой путь; Ваши локальные пакеты никогда не разрешатся без определений классов, от которых они зависят, и учитывая, что в сети / оборудовании с очень плохим SLA может быть более тысячи потенциальных удаленных экспортеров, это не будет хорошо масштабироваться или будет очень устойчивым, учитывая ошибки распределенных вычислений .

Если бы мы попытались сделать удаленные пакеты, фреймворк должен был бы импортировать все экспортированные пакеты со всех доступных удаленных узлов, а затем выбрать только один, чтобы импортировать каждый экспорт пакета из (это было бы произвольно, и если узел выбора отключился, весь процесс импорта удаленного пакета должен был бы снова сработать).

Что вам нужно сделать, это отделить ваши API / интерфейсы от вашей реализации, затем вы распределяете пакет API по всем узлам, которые в этом нуждаются, а затем используете dOSGi для импорта сервисов.

Извините, если это неясно или неожиданно, но это должно объяснить, почему просто нецелесообразно иметь удаленно экспортируемые пакеты.

на примечании стороны; Я не уверен, что r-osgi активно поддерживается или соответствует новейшей спецификации Remote Services Admin , от просмотра последнего коммита для магистрали SVN было 14/02/2011. Здесь перечислены некоторые альтернативные реализации dOSGi здесь (но избегайте CXF).

РЕДАКТИРОВАТЬ : С точки зрения развертывания, распространение ваших пакетов (и конфигурации) может быть выполнено из OBR (имеется число открытых и несколько реализаций Felix / Eclipse ) или репозиторий maven может быть переназначен с pax url handler .

...