Какой пакет для FrameworkFactory я должен выбрать в OSGi?

Я недавно начал использовать каркас OSGi.. Я пытаюсь запустить контейнер OSGi из проекта на основе Maven..

Я добавил эту зависимость в мой файл pom.xml в вышеупомянутом проекте maven.

<dependency>
    <groupId>org.apache.felix</groupId>
    <artifactId>org.apache.felix.framework</artifactId>
    <version>4.2.1</version>
</dependency>

Ниже мое основное приложение

public static void main(String[] args) throws BundleException {

    FrameworkFactory frameworkFactory = ServiceLoader.load( FrameworkFactory.class).iterator().next();
    Map<String, String> config = new HashMap<String, String>();

    //TODO: add some config properties
    Framework framework = frameworkFactory.newFramework(config);
    framework.start();
}

Теперь, когда я пытаюсь импортировать пакеты для FrameworkFactoryЯ получаю два варианта на выбор.. Ниже изображение. Кто-нибудь может мне помочь, какой мне нужно выбрать здесь?

Я выбирал эти два?

import org.osgi.framework.launch.Framework;
import org.osgi.framework.launch.FrameworkFactory;

Это правильно?

1 ответ

Это org.osgi.framework.launch.FrameworkFactory, поскольку это дает вам доступ ко всем средам OSGi, а не только к Apache Felix. ServiceLoader использует имя этого класса для просмотра всех записей путей к классам (jars) META-INF/services каталог для org.osgi.framework.launch.FrameworkFactory файл. Если вы заглянете в пакет Felix Framework, то обнаружите, что этот файл содержит "org.apache.felix.framework.FrameworkFactory", который затем будет создан и возвращен.

Так что если вы хотите использовать только Apache Felix, вы также можете просто new org.apache.felix.framework.FrameworkFactory() вместо использования косвенной загрузки Java Service Loader.

Другие вопросы по тегам