代码之家  ›  专栏  ›  技术社区  ›  Bree VanOss

使用dmlambda时未调用Apache Felix stop方法

  •  2
  • Bree VanOss  · 技术社区  · 6 年前

    我们在DM Lambda(1.1.1)中遇到了一个问题,即当bundle停止时,没有调用bundles stop方法。我有一个可执行的jar,其中包含了这个问题的一个简单示例。该示例包含两个自定义捆绑包,一个使用标准DM语法,其中stop按预期调用。第二个自定义包使用新的DM Lambda语法,下面包含激活器代码。第二个包(org.syntech.examples.dmlambda)不会导致停止调用。

    我不得不认为我只是缺少了一些明显的东西,但尽管我可能会尝试,但我无法调用支持DM Lambda的bundle的stop方法。任何帮助或指导都将不胜感激。我们非常喜欢新的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 回复  |  直到 6 年前
        1
  •  1
  •   sparkitny    6 年前

    您的示例似乎正确,但 org.apache.felix.dependencymanager.lambda 1.1.1版本。

    我刚修好( see the felix JIRA issue ).

    我还在jira问题上附加了补丁 which you can find here.