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...");
}
}
(2) 编写 osgi-bundle2-1.0.1.jar ,这是一个空的 bundle,什么与没有。
查看 osgi-bundle2 启动、停止、更新、卸载时的状态变化: