OSGI Embedded Equinox - Пакет для доступа к программам, не созданным в среде OSGI - PullRequest
0 голосов
/ 10 января 2012

У меня есть приложение на стороне сервера, и я хочу встроить среду osgi для динамической загрузки пакета.
Предположим, я хочу предоставить QuoteImpl, реализующий IQuote (созданный как часть начальной загрузки контейнера сервера / Spring), для использования различными пакетами.

Q1. Есть ли чистый способ предоставления экземпляров серверных приложений Bundles? (Между прочим, из-за унаследованности невозможно сделать серверный код в комплекте :), и не нужно делать все приложение osgi'ed.

Попытка экспозиции через сервис и пакет для приведения в IQuote. Не уверен, что я делаю это хорошо, но терпит неудачу с нерешенными проблемами компиляции, поскольку IQuote находится в основных проектах приложений, а не в пакетном проекте. есть идеи?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Да, способ сделать это с помощью службы. Приложение "host" будет публиковать сервис, а пакеты внутри OSGi будут использовать сервис обычным способом.

Ключом к этой работе является то, что API службы (т. Е. Пакет, содержащий IQuote) должен быть экспортирован хост-приложением через экспорт системных пакетов. Вы можете управлять этим, установив свойство org.osgi.framework.system.packages.extra при создании встроенной платформы OSGi. Я написал сообщение в блоге на эту тему, которое должно помочь вам начать работу (ищите заголовок "Предоставление пакетов приложений").

Вы заявляете, что у вас есть проблемы с компиляцией. Чтобы исправить это, необходимо знать, как вы структурировали свои проекты и как построить систему.

1 голос
/ 11 ноября 2012

Вот так я встроил среду выполнения Equinox OSGi в свой класс Java.Я полагаю, вы могли бы сделать то же самое.https://github.com/sarxos/equinox-launcher/blob/master/src/main/java/com/github/sarxos/equinox/Launcher.java

...