OSGI的bundle监听类

http://blog.csdn.net/lfsf802/article/details/19773533

近忙于产品的报警功能,采用的是esper的java事件处理框架来实现的这个功能,关于esper的介绍参照前面对esper介绍的博客。

       那么如果利用OSGI的功能和epser框架集成呢?

       其实在OSGI中有这样一个BundleLinstener类,就是用这个类来进行集成的,首先在OSGI其实是有两个BundleListener类的一个是同步的一个是异步的,其中BundleListener是异步的,而SynchronousBundleListener是异步的。

       两个类都可以监听bundle的installed, resolved, starting, started, stopping, stopped, updated,unresolved,  uninstalled时的事件。

       这样就可以了,这时候可以自定一个listener接口,并且实现一个changeBundle方法,就可以监听到bundle的各个状态,通过getType方法来获得bundle的状态,如果是2就是bundle启动的状态。

      具体代码为,

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
public class AlarmBundleListener implements BundleListener { 
 
    @Override 
    public void bundleChanged(BundleEvent event) { 
         
        System.out.println(event.getType()); 
        System.out.println("-------------------------------"+event.getBundle().getSymbolicName()); 
    } 
 


      这时候就可以在bundle开启的时候进行报警引擎的开启,也就是在之前epser博客中介绍的引擎开启的代码。并且将所有的报警的EPL语句进行监听,如果报警信息进入esper引擎并且符合EPL的语句我们就可以进行相应的报警的业务处理了。

猜你喜欢

转载自michales003.iteye.com/blog/2220238