我们遇到了DM Lambda(1.1.1)的问题,当捆绑停止时,没有调用bundle的stop方法。我有一个可执行jar,其中包含此问题的一个简单示例。该示例包含两个自定义包,一个使用标准DM语法,其中stop按预期调用。第二个自定义包使用新的DM Lambda语法,下面包含Activator代码。第二个包(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和我可以发送的示例项目,说明了这个问题。任何帮助或指导将不胜感激。
答案 0 :(得分:1)
您的示例似乎正确,但org.apache.felix.dependencymanager.lambda
1.1.1版本中存在错误。
我刚修好它(see the felix JIRA issue)。
我还在jira问题which you can find here.
中附加了补丁