【发布时间】:2015-11-11 15:12:24
【问题描述】:
是否可以根据 java 系统属性不激活 OSGI 声明式服务?
例如,如果我使用以下属性启动 java,我不想启动某个 DS: -DdoNOtActivate=true
我想过阅读特定 DS 的激活器中的属性,但接下来呢?通话停用?
编辑:
好的,多亏了 Balazs 对编程激活的回答,我才让服务本身正常工作,但我的服务还为 org.osgi.service.event.EventHandler 提供了一个接口,但该部分无法正常工作。我的 component.xml 中有这个:
<service>
<provide interface="org.osgi.service.event.EventHandler" />
<provide interface="com.example.test.MyService" />
</service>
<property name="event.topics">
test
</property>
所以我删除了整个服务部分并留下了 event.topics 部分,并在我的 java 类激活器中添加了以下内容:
myServiceReg = context.registerService(this.getClass().getName(), this, null);
eventHandlerReg = context.registerService(EventHandler.class.getName(), this, null);
所以 myService 已激活并注册,一切正常。 EventHandler 似乎也已注册,但没有事件到达我的 handleEvent() 方法。
对此有什么想法吗?
【问题讨论】: