2013-09-26 5 views
0

Мне нужно передать параметры между родительским приложением и встроенным OSGi. Я использую equinox и запускаю OSGi FrameworkFactory в моем классе Launcher, затем устанавливаю и запускаю пакеты. Можно передать ссылку на объект или даже некоторый примитивный тип для связывания или обслуживания?Передача аргументов между родительским приложением и OSGi Framework

ответ

2

После запуска фреймворка вы можете получить контекст системного пакета, а также получить доступ и услуги вызова, зарегистрированные пучками в рамках. Необходимо проявлять осторожность в отношении типов услуг, поскольку они, вероятно, загружаются из пакетов, и поэтому типы не отображаются непосредственно в вашем стартовом коде. Но вы можете использовать отражение. Или вы можете поместить эти типы в класс classloader и экспортировать их из системного пакета через org.osgi.framework.system.packages.extra свойство framework ваших наборов запуска.

+0

Спасибо за ответ, но это не решение моей проблемы. Я хочу запустить пакет или службу с определенным аргументом (например, ссылкой на объект) из моего родительского класса приложения (который будет запускать OSGi Framework). Вы говорите об отправке целого класса в системный пакет system_packages_extra, чтобы иметь видимость его в OSGi Framework - мне он не нужен (я разрешаю его, добавляя классы, которые мне нужно для класса osgi, как пакет). –

+0

Могу ли я использовать отражение для запуска метода службы из класса запуска с параметрами? Но как я могу получить имя класса Service за пределами OSGi Framework? –

+0

Вы можете использовать отражение для вызова метода в службе, тип которой не отображается вам в панели запуска. Вы можете передать любой тип аргумента, который вы можете создать либо напрямую, либо через отражение. –