Welcome 微信登录

首页 / 软件开发 / JAVA / 使您的应用程序调用我的应用程序,第1部分(下)

使您的应用程序调用我的应用程序,第1部分(下)2012-07-20 IBM Madhuri SudaApache Geronimo 通信基础 —— 开发、部署和测试(下)

消息驱动 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

在 PurchaseOrderMDB 的 onMessage() 方法中,您调用了 PurchaseOrderEJB 的 addPurchaseOrder() 方法在数据库表中创建新采购 订单行。

Geronimo 服务器的 JNDI 属性如下:

java.naming.factory.initial=org.openejb.client.RemoteInitialContextFactory

java.naming.provider.url=localhost:4201
(4201 是默认端口)

java.naming.security.principal=system(默认用户名)

java.naming.security.credentials=manager(默认口令)