После установки функции scr в karaf дважды вызывается метод активации

Я пытаюсь установить пакет OSGi с apache-karaf 2.3.10 с примером, который я уже опубликовал в этом ссылка. Я сделал следующие шаги

1. Downloaded apache-karaf version 2.3.10 
2. Executed the command features:install scr. Successfully installed scr. I have verified by executing scr:list
3. Installed all the bundles
4. Finally after starting all the bundles activate method in ExampleComponentFactoryManager  called twice and two objects are created. I have verified the same by executing the command scr:list
5. After uninstalling the scr feature the activate method in ExampleComponentFactoryManager called only once which is the expected behaviour.
6. Also i have noted that upto apache-karaf-2.3.10 while installing the scr feature it fetches from the online repo. But from 2.3.11 i am getting error because it tries to fetch it from my maven repository. The error is shown the console.

Может ли кто-нибудь сказать мне, что происходит с функцией scr внутри karaf? Потому что с функцией scr я могу видеть, какие фабрики и экземпляры доступны в karaf. Это ожидаемый?


person Shriram    schedule 08.11.2015    source источник


Ответы (1)


Можете ли вы проверить, возможно, есть два запущенных экземпляра пакета felix scr. Это объясняет создание двойного объекта.

person Christian Schneider    schedule 08.11.2015
comment
Только что выполнил команду features:install scr command. Я не знаю о внутренней реализации. Если возможно, я могу поделиться своими тестовыми пакетами, чтобы вы могли попробовать их с 2.3.10, а также с другими версиями. Поскольку, как вы сказали, есть проблема в папке горячего развертывания, я попытался установить пакеты с помощью команды «установить файл: «путь к пакету»». - person Shriram; 08.11.2015
comment
Можете ли вы проверить установленные пакеты с помощью la -s и посмотреть, установлено ли более одного scr impl? - person Christian Schneider; 08.11.2015
comment
да, есть два org.apache.feilx.scr, один с версией 1.8.2 и один с 1.6.0. В любом случае, он не должен активироваться дважды, верно? - person Shriram; 08.11.2015
comment
Потому что OSGi поддерживает установку одних и тех же пакетов с одной и той же версией. Из этого, если присутствуют две версии одного и того же пакета, будет вызвана активация два раза, что приведет к дублированию создания объекта, верно? - person Shriram; 08.11.2015
comment
Да. Обычно установка двух версий пакета не представляет большой проблемы. В этом случае пакет scr реализует шаблон расширения. Это означает, что каждый из пакетов scr будет работать с каждым пользовательским пакетом, и каждый из них будет создавать все объекты. Таким образом, для пакетов расширения, таких как scr, важно установить только одну версию. - person Christian Schneider; 08.11.2015