宣言型サービスを使用して作成されたサービスがほとんどない OSGI (Felix) アプリケーションがあります。例えば
@Service
@Component(metatype = true)
public class SomeService implements IInterface {
@Property(value = "1")
private static final String SOME_PROP = "SOME_PROP";
@Modified
public void modified(Map<String, ?> inConfig)
{ //some code
}
@Activate
public void activate(Map<String, ?> inConfig)
{ //some code
}
フレームワークを開始すると、このサービスに対応するバンドルが開始されていることがわかります。OSGI コンソールを使用してプロパティ (SOME_PROP) を変更しようとすると、イベント トピックorg/apache/felix/webconsole/plugins/event/internal/converter/ConfigurationEventConverter/CM_UPDATEDが発生するイベントしか表示されません。org/osgi/framework/ServiceEvent/MODIFIEDが起動されていないため、変更されたメソッドが呼び出されず、新しいプロパティ値が表示されません。また、私が気付いた奇妙なことの1つは、バンドルfelix.scrがインストール済みバンドルリストにリストされていても、それに対応するバンドルorg.apache.felix.scrの開始イベントが表示されないことです。
プロパティが更新されない理由に関するヒントはありますか?