OSGi 系列(三)之 bundle 事件监听 OSGi 系列(三)之 bundle 事件监听

bundle 的事件监听是在 bundle 生命周期的不同状态相互转换时,OSGi 框架会发出各种不同的事件供事先注册好的事件监听器处理。

1. 事件监听器

事件名称 描述 事件值
INSTALLED Bundle 被成功安装 1
STARTED Bundle 被成功启动 2
STOPED Bundle 被成功停止 4
UPDATED Bundle 被成功更新 8
UNINSTALLED Bundle 被成功卸载 16
RESOLVED Bundle 被成功解析 32
UNRESOLVED Bundle 被转变为未解析状态 64
STARTING Bundle 正在启动 128
STOPPING Bundle 正在停止 256
LAZY_ACTIVATION Bundle 进入延迟启动状态 512

2. 案例

(1) 编写 bundle-listener-1.0.1.jar ,启动类 BundleActivator 如下:

public class HelloBundleActivator implements BundleActivator {
    @Override
    public void start(BundleContext context) throws Exception {
        System.out.println("bundle start...");
        context.addBundleListener(new BundleListener() {
            @Override
            public void bundleChanged(BundleEvent event) {
                System.out.println(event.getBundle().getSymbolicName());
                System.out.println(event.getType());
            }
        });
    }

    @Override
    public void stop(BundleContext context) throws Exception {
        System.out.println("bundle stop...");
    }
}

OSGi 系列(三)之 bundle 事件监听
OSGi 系列(三)之 bundle 事件监听

(2) 编写 osgi-bundle2-1.0.1.jar ,这是一个空的 bundle,什么与没有。

查看 osgi-bundle2 启动、停止、更新、卸载时的状态变化:

OSGi 系列(三)之 bundle 事件监听
OSGi 系列(三)之 bundle 事件监听