通过实现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" />
代码:
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" />