The white board pattern handler
本处理器的目标是简化白板架构的实现。这个架构风格和extender架构风格非常接近,但是使用服务代替了bundle。
*The whiteboard pattern
一个白板模式基于2种角色:
〉一个消费者检索特定的服务或有特殊标志的服务
〉被检索的服务
实现一个白板模式和实现一个扩展模式一样复杂。它需要动态跟踪服务。被检索的服务具有很高的动态性,它们可在任何时候达到、离去或者更改。
在OSGi规范中定义的几个服务使用了白板模式,比如Device Access Manager
*Using the handler
首先,你需要在组件类型描述中配置处理器:
<ipojo xmlns:wbp="org.apache.felix.ipojo.whiteboard">
<component
className="org.apache.felix.ipojo.test.FooWhiteBoardPattern"
>
<wbp:wbp
filter="(my.property=1)"
onArrival="onArrival"
onDeparture="onDeparture"
onModification="onModification"
/>
<provides/>
</component>
注意:这个处理机是一个白板处理器。因此它使用“org.apache.felix.ipojo.whiteboard”命名空间。
描述后,你可以实现组件了。在描述文件中指定的方法,将会在匹配的服务到达或者离开、修改时分别
被调用。modification callback是可选的。一个匹配的服务是通过服务参考对照确定的过滤被侦测到的。
过滤可以是服务接口或者服务的属性。
本处理器的目标是简化白板架构的实现。这个架构风格和extender架构风格非常接近,但是使用服务代替了bundle。
*The whiteboard pattern
一个白板模式基于2种角色:
〉一个消费者检索特定的服务或有特殊标志的服务
〉被检索的服务
实现一个白板模式和实现一个扩展模式一样复杂。它需要动态跟踪服务。被检索的服务具有很高的动态性,它们可在任何时候达到、离去或者更改。
在OSGi规范中定义的几个服务使用了白板模式,比如Device Access Manager
*Using the handler
首先,你需要在组件类型描述中配置处理器:
<ipojo xmlns:wbp="org.apache.felix.ipojo.whiteboard">
<component
className="org.apache.felix.ipojo.test.FooWhiteBoardPattern"
>
<wbp:wbp
filter="(my.property=1)"
onArrival="onArrival"
onDeparture="onDeparture"
onModification="onModification"
/>
<provides/>
</component>
注意:这个处理机是一个白板处理器。因此它使用“org.apache.felix.ipojo.whiteboard”命名空间。
描述后,你可以实现组件了。在描述文件中指定的方法,将会在匹配的服务到达或者离开、修改时分别
被调用。modification callback是可选的。一个匹配的服务是通过服务参考对照确定的过滤被侦测到的。
过滤可以是服务接口或者服务的属性。