2016-04-21 3 views
0

Я использую Fabric8 v.1.2.0.redhat-133.Fabric8: получить текущий профиль внутри пакета OSGi

У меня есть профиль с помощью пучка и некоторые конфигурационный файл внутри, например:

Bundle: файл mvn:my-gr/my-art/1-SNAPSHOT

Конфигурация: config.xml

Я могу вызвать

ProfileManager manager = ProfileManagerLocator.getProfileManager(); 
Profile profile = manager.getProfile("1.0", "profile-name"); 
byte[] brokerConf = profile.getFileConfiguration("config.xml"); 

внутри код моего пакета и получить файл. Оно работает. Но в этом случае мне нужно знать имя профиля.

Есть ли способ получить имя профиля текущего пакета?

Или есть лучший способ получить config.xml, возможно, не с ProfileManager?

ответ

1

Это невозможно, так как на профилях уровня OSGi не существует. Профили представляют собой концепцию плавкого предохранителя, которая может отображать функции и комплекты. Особенности - концепция Karaf, и только пучки - настоящие артефакты OSGi. Это означает, что контейнер OSGi не знает о каких-либо функциях или профилях и может не сообщать вам, какая функция или профиль отвечает за установку пакета. Даже если бы это могло быть, все равно был бы тот факт, что несколько функций и профилей могут иметь ваш комплект в своем списке, что делает невозможным сказать, какой профиль является «текущим».

Если вы хотите получить доступ к файлу из профиля, вы должны использовать обработчик URL профиля. См. http://fabric8.io/gitbook/urlHandlers.html

+0

Да, я понимаю, что OSGi ничего не знает о профилях. Мне не нужен текущий профиль, мне нужно прочитать файл конфигурации из него. И 'profile:' url-обработчик - это именно то, что мне нужно. Я блуждаю, почему я пропустил это в документах. Оно работает. Спасибо. –

+0

Добро пожаловать. –