使用 Apache Geronimo 和 JMS 构建事件驱动的框架
2010-04-23 00:00:00 来源:WEB开发网事件通道
事件通道 是事件发布者用于发布事件,事件接收者用于订阅和接收事件的组件。简单事件通道的接口如 清单 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() + "]");
}
}
- ››使用linux中的quota教程
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››使用jxl生成带动态折线图的excel
- ››apache rewrite将指定URL转向指定的几个服务器
- ››使用mysql mysqldump进行数据库迁移
- ››使用jquery是新tab形式
- ››使用QUnit进行Javascript单元测试
- ››使用UITextFieldDelegate来隐藏键盘
- ››使用公式提取Excel中的日期后发现格式不对
- ››使用SQL Azure 的BI 解决方案
- ››使用PLSQL Developer工具导出sql文件
- ››使用双缓冲技术实现Android画板应用
更多精彩
赞助商链接