Метод остановки 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, который вы можете найти здесь.

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