Какой пакет для 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.