基于gemini的blueprint(原生是Spring DM)实现对bundle生命周期的监听

通过实现OsgiBundleApplicationContextListener监听器即可获取bundle生命周期的监听。
代码:
import org.eclipse.gemini.blueprint.context.event.OsgiBundleApplicationContextEvent;
import org.eclipse.gemini.blueprint.context.event.OsgiBundleApplicationContextListener;
import org.osgi.framework.Bundle;
import org.springframework.context.ApplicationContext;

public class BundleListener implements OsgiBundleApplicationContextListener<OsgiBundleApplicationContextEvent> {

@Override
public void onOsgiApplicationEvent(OsgiBundleApplicationContextEvent event) {
ApplicationContext contex = event.getApplicationContext();
System.out.println("contex  " + contex);
Bundle bundle = event.getBundle();
System.out.println("bundle  " + bundle);
Object obj = event.getSource();
System.out.println("obj " + obj);
System.out.println("bundle监听------->");
int state = bundle.getState();
System.out.println("bundle生命周期状态码:" + state);

}

这只是代码层,第一步,还需要将此监听器注册到OSGI容器中,通知OSGI容器,有bundle生命周期发生变化时,通知此监听器实现。
具体发布服务方法:

<bean id="bundleListener" class="com.chirq.listener.BundleListener">

<osgi:service ref="bundleListener" interface="org.eclipse.gemini.blueprint.context.event.OsgiBundleApplicationContextListener" />

猜你喜欢

转载自crq876.iteye.com/blog/2201215