WEB开发网
开发学院软件开发Java 使用 Apache Geronimo 和 JMS 构建事件驱动的框架... 阅读

使用 Apache Geronimo 和 JMS 构建事件驱动的框架

 2010-04-23 00:00:00 来源:WEB开发网   
核心提示: 事件通道事件通道 是事件发布者用于发布事件,事件接收者用于订阅和接收事件的组件,使用 Apache Geronimo 和 JMS 构建事件驱动的框架(6),简单事件通道的接口如 清单 2 所示,清单 2. 简单事件通道的接口publicinterfaceChannel{voidstart();v

事件通道

事件通道 是事件发布者用于发布事件,事件接收者用于订阅和接收事件的组件。简单事件通道的接口如 清单 2 所示。

清单 2. 简单事件通道的接口

public interface Channel 
   { 
    void start(); 
    
    void stop(); 
    
    void publish(final Event event); 
    
    void subscribe(final Receiver receiver, 
            final Class eventClass); 
    
    void unsubscribe(final Receiver receiver, 
             final Class eventClass); 
   } 

Java 反射

Java 运行环境 (JRE) 维护关于 java.lang.Class 类中每个类或接口的信息。Class 对象的实例给出详细的方法签名、字段类型、构造器签名、修饰符和常量。

反射 API Javadoc定义了开发人员如何以编程方式在运行时发现有关类、接口、数组及诸如此类的信息。

注意,subscribe() 和 unsubscribe() 方法需要一个 Class 类型的参数,事件通道使用该参数来确定接收者将订阅或取消订阅哪些类型的事件。

为避免事件接收者轮询事件何时发生,可以通过 Receiver 接口的 receive() 方法调用事件接收者。每当将事件发布到事件通道时,都可以使用 Java 反射确定哪些订阅者将接收该事件。然后在这些对象上调用 receive() 方法。 清单 3 显示了一个简单事件接收者。

清单 3. 一个简单事件接收者的实现

public class EventReceiver 
    implements Receiver 
   { 
    private static final transient Log log = 
     LogFactory.getLog(EventReceiver.class); 
    
    private String id = ""; 
    
    public EventReceiver() 
    { 
    } 
    
    public EventReceiver(String id) 
    { 
     this.id = id; 
    } 
    
    public void setId(String id) 
    { 
     this.id = id; 
    } 
    
    public String getId() 
    { 
     return id; 
    } 
    
    public void receive(final Event event) 
    { 
     log.info("EventReceiver [" + id 
          + "] received event [" + event.getMessage() + "]"); 
    } 
   } 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Apache Geronimo

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接