【发布时间】:2014-12-12 13:49:31
【问题描述】:
我正在开发一个基于 OSGI 的系统,它使用声明式服务来定义组件。但是,当从 Eclipse 运行它时,我的组件之一未初始化。当我使用简单的控制台命令调查问题时,我得到以下输出(带有一些小混淆):
osgi> component 51
Component[
name = com.e.location.view
activate = activate
deactivate = deactivate
modified =
configuration-policy = optional
factory = null
autoenable = true
immediate = false
implementation = com.e.location.view.LocationViewContribution
state = Unsatisfied
properties =
serviceFactory = false
serviceInterface = [com.e.model.ViewContribution]
references = {
Reference[name = SpecificationProvider, interface = com.e.SpecificationProvider, policy = static, cardinality = 1..1, target = null, bind = setSpecificationProvider, unbind = null]
}
located in bundle = com.e.location.view_1.0.0.SNAPSHOT [107]
]
Dynamic information :
The component is satisfied
All component references are satisfied
Component configurations :
Configuration properties:
component.name = com.e.location.view
component.id = 55
objectClass = String[com.e.model.ViewContribution]
Instances:
所以组件有state = Unsatisfied,但动态信息表明组件满足,其组件引用也满足。
谁能解释一下?为什么我的组件没有初始化?
更新:显然,为组件设置immedate="true" 修复了初始化问题。 osgi 命令仍然有state = Unsatisfied。有人知道为什么吗?
【问题讨论】:
标签: java osgi equinox declarative-services