GlassFish / Felix OSGI, программная установка пакетов и управление экземплярами фреймворка - PullRequest
0 голосов
/ 06 февраля 2020

Привет, у меня есть два приложения для развертывания на одном экземпляре кластера glassfi sh. В первом приложении для развертывания я программно устанавливаю пакеты OSGI, используя этот код:

FrameworkFactory frameworkFactory = ServiceLoader.load( FrameworkFactory.class ).iterator().next();
framework = frameworkFactory.newFramework( getOsgiConfiguration() );
framework.start();
bundleContext = framework.getBundleContext();
bundleContext.installBundle(filename)

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

Unable to parse document 'bundle://132.0:1/META-INF/mojarra_ext.taglib.xml': No bundle associated with resource: bundle://132.0:1/META-INF/mojarra_ext.taglib.xml.

После отладки некоторого кода выясняется, что после запуска нового экземпляра фреймворка в системе теперь есть два экземпляра, один из которых запущен glassfi sh, причем все его модули установлены в виде установленных пакетов, таких как jakarta.faces.jar а второе запускается первым развернутым приложением, в котором установлены только собственные пакеты. Но во время второго развертывания приложения GF не использует свой первый экземпляр felix со всеми его модулями, перечисленными как установленные пакеты, а второй экземпляр, в котором только мои собственные пакеты перечислены как установленные. Есть ли способ избежать создания нового экземпляра felix framwork для программной установки моих собственных пакетов или, по крайней мере, предотвратить регистрацию нового экземпляра, чтобы gf не вызывала его при развертывании?

...