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

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

 2010-04-23 00:00:00 来源:WEB开发网   
核心提示: 注意: EventConsumer 类的完整源代码可以从本文末尾的 下载 部分通过下载获得,在 Geronimo 中部署和运行事件框架事件框架使用部署在 Geronimo 中的 Web 应用程序来测试每个事件类型,使用 Apache Geronimo 和 JMS 构建事件驱动的框架(9),除了事

注意: EventConsumer 类的完整源代码可以从本文末尾的 下载 部分通过下载获得。

在 Geronimo 中部署和运行事件框架

事件框架使用部署在 Geronimo 中的 Web 应用程序来测试每个事件类型。除了事件框架外,Web 应用程序还包括一个用于输入事件消息的 HTML 表单和一个用于接收 HTTP 请求并将内容分派到事件通道的 servlet。

HTML 表单(如 图 5 所示)只允许将三种类型的事件消息发送到分派 servlet。

图 5. Web 应用程序的开始屏幕

事件分派 servlet 实例化事件通道对象和三个示例事件接收者。事件接收者然后订阅给定的事件,servlet 将事件发布给事件通道对象。清单 6 显示了该 servlet。

清单 6. 分派 servlet 的实现

public class SenderServlet extends HttpServlet 
   { 
    private EventChannel eventChannel = null; 
    private EventReceiver allTravelEventReceiver = null; 
    private EventReceiver flightEventReceiver = null; 
    private EventReceiver lodgingEventReceiver = null; 
    
    public void init() 
     throws ServletException 
    { 
     super.init(); 
    
     eventChannel = new EventChannel(); 
     eventChannel.start(); 
    
     // create event receivers 
     allTravelEventReceiver = 
      new EventReceiver("allTravelEventReceiver"); 
     flightEventReceiver = 
      new EventReceiver("flightEventReceiver"); 
     lodgingEventReceiver = 
      new EventReceiver("lodgingEventReceiver"); 
    
     // subscribe to all Travel events 
     eventChannel.subscribe(allTravelEventReceiver, 
                 TravelEvent.class); 
    
     // subscribe to Flight events 
     eventChannel.subscribe(flightEventReceiver, 
                 FlightEvent.class); 
    
     // subscribe to Lodging events 
     eventChannel.subscribe(lodgingEventReceiver, 
                 LodgingEvent.class); 
    } 
    
    public void destroy() 
    { 
     super.destroy(); 
    
      // unsubscribe all event receivers and stop the event channel 
    } 
    
    public void doGet(HttpServletRequest req, HttpServletResponse res) 
     throws IOException, ServletException 
    { 
     // respond with input form 
    } 
    
    public void doPost(HttpServletRequest req, HttpServletResponse res) 
     throws IOException, ServletException 
    { 
     String txtMsg = req.getParameter("txtMsg"); 
     if (txtMsg != null && txtMsg.length() > 0) 
     { 
      String flightDelayed = req.getParameter("FlightDelayed"); 
      String rateIncreased = req.getParameter("RateIncreased"); 
      String seatAvailable = req.getParameter("SeatAvailable"); 
    
      if (flightDelayed != null) 
      { 
       // send a Flight event 
       eventChannel.publish(new FlightDelayed(txtMsg)); 
      } 
      else if (rateIncreased != null) 
      { 
       // send a Lodging event 
       eventChannel.publish(new RateIncreased(txtMsg)); 
      } 
      else if (seatAvailable != null) 
      { 
       // send a Flight event 
       eventChannel.publish(new SeatAvailable(txtMsg)); 
      } 
     } 
    
     doGet(req, res); 
    } 
   } 

上一页  4 5 6 7 8 9 10  下一页

Tags:使用 Apache Geronimo

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