1、首先在pom文件中引用
<dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.service.event</artifactId> <version>1.3.1</version> <type>jar</type> </dependency>
<reference id="EventAdmin" interface="org.osgi.service.event.EventAdmin" availability="mandatory"/>
public class EventAdminUtils{ private EventAdmin eventAdmin; public EventAdmin getEventAdmin() { return eventAdmin; } public void setEventAdmin(EventAdmin eventAdmin) { this.eventAdmin = eventAdmin; } public boolean SyncEvent(String topic, Dictionary props) { Event reportGeneratedEvent = new Event(topic,props); eventAdmin.sendEvent(reportGeneratedEvent); return true; } public boolean AsyncEvent(String topic, Dictionary props) { Event reportGeneratedEvent = new Event(topic,props); eventAdmin.postEvent(reportGeneratedEvent); return true; } }
<bean id="adminEvent" class="com.test.event.impl.utils"> <property name="eventAdmin" ref="EventAdmin"/> </bean>
4、当做一个服务发布出去,需要用到的地方,引用服务就可以
创建一个接口类:
public interface IEventAdminUtils { public boolean SyncEvent(String topic,Dictionary props); public boolean AsyncEvent(String topic,Dictionary props); }
public class EventAdminUtils implements IEventAdminUtils{ private EventAdmin eventAdmin; public EventAdmin getEventAdmin() { return eventAdmin; } public void setEventAdmin(EventAdmin eventAdmin) { this.eventAdmin = eventAdmin; } public boolean SyncEvent(String topic, Dictionary props) { Event reportGeneratedEvent = new Event(topic,props); eventAdmin.sendEvent(reportGeneratedEvent); return true; } public boolean AsyncEvent(String topic, Dictionary props) { Event reportGeneratedEvent = new Event(topic,props); eventAdmin.postEvent(reportGeneratedEvent); return true; } }
<service ref="Sender" interface="com.test.event.utils.IEventAdminUtils"> </service>
public class Handler implements EventHandler { @Override public void handleEvent(Event event) { String reportMsg = (String) event.getProperty("message"); } }