简单问题:我正在再次评估E4,并希望使用IEventBroker
发送简单事件。多个教程说明了要走的路:
@Inject
private IEventBroker eventBroker;
this.eventBroker.send("org.acme.event", myEventObject);
然而,所有未能确认如何将“org.acme.event”注册为主题,因此我不会得到此异常:
Caused by: java.lang.IllegalArgumentException: invalid topic: org.acme.event
at org.osgi.service.event.Event.validateTopicName(Event.java:236)
at org.osgi.service.event.Event.<init>(Event.java:78)
at org.eclipse.e4.ui.services.internal.events.EventBroker.constructEvent(EventBroker.java:153)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:79)
使用IEventBroker
发送事件的完整方式是什么?
答案 0 :(得分:1)
您不必注册活动主题。
事件主题名称由OSGi规范定义(IEventBroker
是OSGI EventAdmin
的简化接口)。
这里的问题是只有&#39; A-Z&#39;,&#39; a-z&#39;,&#39; 0-9&#39;,&#39; _&#39;和&#39; - &#39;允许在主题名称的部分中。零件使用&#39; /&#39;不是&#39;。所以&#39; org / acme / event&#39;没关系。