宣言型サービスを使用してコンポーネントを定義する OSGI ベースのシステムを開発しています。ただし、Eclipse から実行すると、コンポーネントの 1 つが初期化されません。簡単なコンソール コマンドを使用して問題を調査したところ、次のような出力が得られました (若干難読化されています)。
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
ます。理由を知っている人はいますか?