OSGi 蓝图:如何从 BundleListener 接口调用 onBundleChanged() 方法?
OSGi Blueprint: How can onBundleChanged() method get called from the BundleListener Interface?
我正在尝试在 class 中实现 BundleListener 接口以检索包更改。我试图让它工作,但我的 onBundleChanged() 方法似乎没有被调用。可能是因为它没有在 "Activator" class 中实现。我不知道。
我想获得最新的包更改,因为我想开发一个应用程序,其中包可以在运行时作为插件安装。我想通过使用 BundleListener 接口,我可以授权可以安装在我的 Apache Karaf 环境中的 Bundle。
摘自Blueprint.xml
<bean id="MyBundleListener" class="com.hallo.service.MyBundleListener"/>
我的class
public class MyBundleListener implements BundleListener {
@Override
public void bundleChanged(BundleEvent event) {
System.out.println("bundleChanged() -> Just to test if it works");
}
}
在 Apache Karaf 中,我使用
log:tail
查看方法是否被调用,但目前还没有结果。
创建 bean 对 BundleListener 来说还不够。您还必须将 BundleListener 添加到 BundleContext。
您可以在 bean 的 init 方法中执行此操作。参见
bundleContext.addBundleListener
另外不要忘记在销毁方法中再次删除监听器。
https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html
我正在尝试在 class 中实现 BundleListener 接口以检索包更改。我试图让它工作,但我的 onBundleChanged() 方法似乎没有被调用。可能是因为它没有在 "Activator" class 中实现。我不知道。
我想获得最新的包更改,因为我想开发一个应用程序,其中包可以在运行时作为插件安装。我想通过使用 BundleListener 接口,我可以授权可以安装在我的 Apache Karaf 环境中的 Bundle。
摘自Blueprint.xml
<bean id="MyBundleListener" class="com.hallo.service.MyBundleListener"/>
我的class
public class MyBundleListener implements BundleListener {
@Override
public void bundleChanged(BundleEvent event) {
System.out.println("bundleChanged() -> Just to test if it works");
}
}
在 Apache Karaf 中,我使用
log:tail
查看方法是否被调用,但目前还没有结果。
创建 bean 对 BundleListener 来说还不够。您还必须将 BundleListener 添加到 BundleContext。
您可以在 bean 的 init 方法中执行此操作。参见
bundleContext.addBundleListener
另外不要忘记在销毁方法中再次删除监听器。
https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html