【发布时间】:2016-10-25 01:23:08
【问题描述】:
我有一个 Apache Felix 组件,它的定义如下所示:
...
@Component(immediate=true)
@Service
public class myClass implements myClassInterface {
...
@Activate
public void activate(final Map<String, Object> properties) {
//Do activation stuff
}
...
}
通过阅读有关@Component 和@Activate 注释(http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#component) 的Apache Felix 文档,我了解到@Component 的immediate=true 属性是“立即激活的”。我的问题是我的activate 方法似乎从未被调用过。从我构建项目的那一刻到我使用 OSGi 请求服务 myClass 的那一刻,我的调试器都处于开启状态,但似乎从未调用过 activate 方法。
所以,我的问题有几个层次:
1. 告诉我immediate=true 属性导致组件“立即激活”并没有给我足够的信息。这是否意味着在构建项目后立即激活组件,在创建 myClass 的实例后立即激活,或者在 OSGi 包请求服务 myClass 后立即激活?
2. 尽管我使用了immediate=true,但有什么可能导致我的activate 方法不被调用?如果是这样,我可以做些什么来纠正这个问题?
提前感谢您的帮助。如果我需要提供更多信息,请告诉我。
【问题讨论】:
标签: java osgi apache-felix