WEB开发网
开发学院软件开发Java 使您的应用程序调用我的应用程序,第 1 部分: Apa... 阅读

使您的应用程序调用我的应用程序,第 1 部分: Apache Geronimo 通信基础 —— 开发、部署和测试(下)

 2010-03-19 00:00:00 来源:WEB开发网   
核心提示:消息驱动 bean()既然您已经实现了 PurchaseOrderEJB,接下来就可以实现 PurchaseOrderMDB 了,使您的应用程序调用我的应用程序,第 1 部分: Apache Geronimo 通信基础 —— 开发、部署和测试(下),与 EJB 不同,MDB 是 JMS 侦听器,而是要实现 Messag

消息驱动 bean()

既然您已经实现了 PurchaseOrderEJB,接下来就可以实现 PurchaseOrderMDB 了。与 EJB 不同,MDB 是 JMS 侦听器,侦听 JMS 主题或队列上的 JMS 消息。根据 EJB 2.1 规范,MDB 不仅限于 JMS 侦听器,而是可实现任意自定义侦听器接口。在本系列的第 3 部分中,您将再次回顾这一点,并修改 PurchaseOrderMDB,以便使用自定义侦听器接口,将其与 JCA 资源适配器相集成。

在本教程中,您将实现 PurchaseOrderMDB,它侦听 JMS 主题(POTopic)接收到的带有采购请求的 JMS 消息。接收到采购请求消息时,它将调用 PurchaseOrderEJB 来创建新采购订单。

实现 PurchaseOrderMDB

不同于实体 bean,MDB 不必实现远程接口或主接口,而是要实现 MessageDrivenBean 和 MessageListener 接口 —— 因而必须实现 onMessage() 方法。清单 9 给出了 PurchaseOrderMDB 的代码片段。

PurchaseOrderMDB 的源文件(.java)可在 $part1.home/src/examples/po/mdb 目录下找到。

清单 9. MDB 源代码

public class PurchaseOrderMDB 
    implements MessageDrivenBean, MessageListener { 
 
    private MessageDrivenContext ctx = null; 
 
 
    public void setMessageDrivenContext(MessageDrivenContext mdCtx) 
       throws EJBException { 
       ctx = mdCtx; 
    } 
 
    public void onMessage(Message msg) { 
 
       if (msg instance of ObjectMessage) { 
 
       Serializable bean = ((ObjectMessage) msg).getObject(); 
       poBean = (PurchaseOrderBean) bean; 
       addPurchaseOrder(poBean); 
 
       } 
 
    }// end onMessage 

1 2 3 4 5 6  下一页

Tags:应用程序 调用 应用程序

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