由于当时匆忙的发布,没有进行仔细的校对,发布的EventAdmin部分的代码中缺少了使用DS实现的示例,但同时在其中又提供了OSGI-INF/component.xml,导致了如果大家直接使用该Component.xml切换为使用DS来实现EventHandler的时候会出现运行时没反应的现象,这里的错误在于component.xml中的
<property name="event.topics" value="/*"/>
EventAdmin在通知Event时是根据注册为EventHandler服务的属性来通知的,而这个属性类型要求的为String[]型的,但采用上面的描述方法的话,就把event.topics的属性注册为了String类型,所以发布Event后EventAdmin是无法通知到这个EventHandler的,在DS中,要将注册的属性换成String[]型,非常的简单,就把上面一句改为:
<property name="event.topics">
org/riawork/EQUINOXEVENT
</property>
如需要捕捉多个事件,则可以写为:
<property name="event.topics">
org/riawork/EQUINOXEVENT
org/riawork/OSGIEVENT
</property>
同样,这里也是支持通配符的,也就是可以这么写
<property name="event.topics">
org/riawork/*
</property>
修正后的EventHandler project采用了DS的方式实现,重新打包到了OSGi_Opendoc.rar中,如需要的同学请重新下载。
ps: 多谢
Jim@QAD,才发现了这个错误....:)