Java OSGi蓝图:如何从BundleListener接口调用onBundleChanged()方法?

Java OSGi蓝图:如何从BundleListener接口调用onBundleChanged()方法?,java,osgi,karaf,blueprint,Java,Osgi,Karaf,Blueprint,我试图在一个类中实现BundleListener接口来检索bundle更改。我试图让它工作,但我的onBundleChanged()方法似乎没有被调用。可能是因为它不是在“Activator”类中实现的。我不知道 我想获得最新的捆绑包更改,因为我想开发一个应用程序,在这个应用程序中,捆绑包可以在运行时作为插件安装。我认为通过使用BundleListener接口,我可以对可以安装在ApacheKaraf环境中的bundle进行某种授权 摘录自Blueprint.xml <bean id="M

我试图在一个类中实现BundleListener接口来检索bundle更改。我试图让它工作,但我的onBundleChanged()方法似乎没有被调用。可能是因为它不是在“Activator”类中实现的。我不知道

我想获得最新的捆绑包更改,因为我想开发一个应用程序,在这个应用程序中,捆绑包可以在运行时作为插件安装。我认为通过使用BundleListener接口,我可以对可以安装在ApacheKaraf环境中的bundle进行某种授权

摘录自Blueprint.xml

<bean id="MyBundleListener" class="com.hallo.service.MyBundleListener"/>
在ApacheKaraf中,我使用

log:tail

查看是否调用了该方法,但到目前为止还没有结果。

创建bean对于BundleListener来说是不够的。您还必须将BundleListener添加到BundleContext

您可以在bean的init方法中实现这一点。看

bundleContext.addBundleListener
另外,不要忘记在destroy方法中再次删除侦听器

bundleContext.addBundleListener