Метод остановки Apache Felix не вызывается при использовании dmlambda
Мы столкнулись с проблемой в DM Lambda (1.1.1), когда метод остановки пакета не вызывается при остановке пакета. У меня есть исполняемый файл jar, который содержит простой пример этой проблемы. Пример содержит два пользовательских пакета, один использует стандартный синтаксис DM, где stop вызывается, как и ожидалось. Второй пользовательский пакет использует новый синтаксис DM Lambda, и код активатора приведен ниже. Этот второй пакет (org.syntech.examples.dmlambda) не приводит к остановке вызова.
Я должен думать, что просто упускаю что-то очевидное, но, как ни старайся, я не смог вызвать метод остановки связки с активированным DM Lambda. Любая помощь или руководство будут оценены. Нам очень нравится новый синтаксис DM Lambda, и мы хотели бы использовать его в будущем.
Пример: простой активатор, использующий синтаксис DM Lambda, который не вызывает метод "stop", как ожидалось. Я попытался использовать значение по умолчанию и указать обратные вызовы явно, кажется, ничего не работает.
@Override
protected void init(BundleContext ctx, DependencyManager dm) throws Exception {
component(comp -> comp.impl(ExampleServiceUsingDmLambda.class)
.start("start")
.stop("stop")
.provides(ExampleServiceUsingDmLambda.class));
}
Ниже приведены версии пакета, содержащиеся в примере JAR.
____________________________
Welcome to Apache Felix Gogo
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (5.6.10)|5.6.10
1|Active | 1|osgi.core (6.0.0.201403061837)|6.0.0.201403061837
2|Active | 1|Apache Felix Log Service (1.0.1)|1.0.1
3|Active | 1|Apache Felix Metatype Service (1.1.6)|1.1.6
4|Active | 1|Apache Felix Configuration Admin Service (1.8.16)|1.8.16
5|Active | 1|Apache Felix Dependency Manager (4.4.1)|4.4.1
6|Active | 1|org.apache.felix.dependencymanager.lambda (1.1.1)|1.1.1
7|Active | 1|Apache Felix Gogo Command (1.0.2)|1.0.2
8|Active | 1|Apache Felix Gogo Runtime (1.0.10)|1.0.10
9|Active | 1|Apache Felix Gogo Shell (1.0.0)|1.0.0
10|Active | 1|Apache Felix Remote Shell (1.2.0)|1.2.0
11|Active | 1|Apache Felix Dependency Manager Shell (4.0.6)|4.0.6
12|Active | 1|org.syntech.examples.dmlambda (1.0.0)|1.0.0
13|Active | 1|org.syntech.examples.dmstandard (1.0.0)|1.0.0
У меня также есть исполняемый JAR и пример проекта, который я могу отправить, который иллюстрирует проблему. Любая помощь или руководство будут оценены.
1 ответ
Ваш пример кажется правильным, но есть ошибка в org.apache.felix.dependencymanager.lambda
Версия 1.1.1.
Я только что исправил это ( см. Проблему JIRA).
Я также приложил патч к выпуску jira, который вы можете найти здесь.