读书人

bundle通讯-Event方式

发布时间: 2012-09-01 09:33:03 作者: rapoo

bundle通信----Event方式

针对事件的实现,OSGi中的 Event Admin 服务规范提供了基于发布 / 订阅模型(publish-subscribe model)这种方法,Event Admin 服务将事件从发布者(Publishers)转发到订阅者(Subscribers),从而实现bundle间的通信。具体流程如下图所示:

bundle通讯-Event方式

事件org.osgi.service.event.Event对象来表示,事件有两个要素:主题(Topic)和属性(Properties)。通过主题匹配,事件处理函数只需响应自己感兴趣的事件。

事件的发布有同步(postEvent())和异步(sendEvent())两种方式:前者要等到所有的事件订阅者都响应了该事件才返回, 而后者则是信息发布后直接返回。

下面直接以代码来说明


事件发布:

[stdout] send event![stdout] test event received--[stdout] handle event start--org.osgi.service.event.Event [topic=my_osgi_test_event][stdout] send event![stdout] test event received--[stdout] handle event start--org.osgi.service.event.Event [topic=my_osgi_test_event][stdout] send event![stdout] test event received--[stdout] handle event start--org.osgi.service.event.Event [topic=my_osgi_test_event

注:本次演示的OSGi是基于knopflerfish平台, 缺省状态下并没有包含事件相关的包,需要要额外下载并添加至工程中(本次版本为event_all-3.0.6.jar)。


读书人网 >其他相关

热点推荐