快速业务通道

使用GlassFish实现JMS消息传递 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
配置 WebTrackerFilter。

<filter>    <filter-name>WebTrackerFilter</filter-name>    <filter-class>demo.webtracker.filter.WebTrackerFilter</filter-class> </filter> <filter-mapping>     <filter-name>WebTrackerFilter</filter-name>     <url-pattern>*.html</url-pattern> </filter-mapping>

异步消息传递

使用 WebTrackerFilter 可获得请求信息;下一步是开发 JMS 客户机以 JMS 消息的形式将数据邮寄 到消息队列。选择点到点模式进行消息传递。

为典型 JMS 客户机开发的代码片断如下所示。您需要使用从 JNDI 树中检索到的 JMS 管理对象 InitialContext,执行连接工厂和目的地的 JNDI 查找操作。另一种选择是,在运行时使用注释来注入 JMS 资源。在代码中使用的 webTrackerConnFactory 和 webTrackerQueue 分别是连接工厂和目的地的 JNDI 名称。客户机假设这些资源已经在 GlassFish 中进行了配置,那么配置需要在执行这些代码之前完 成。参考 “在 GlassFish 中配置 JMS 资源” 部分来了解如何在 GlassFish 中配置 JMS 资源。

在连接工厂上使用 createQueueConnection 方法,可以创建一个到 JMS 服务提供器的 Connection( 连接)。连接提供对基础消息传输的访问。

接下来的任务是使用 createSession 方法在 Connection 对象上创建 JMS Session(会话)。会话是 生成和使用消息的单线程上下文。createSession 的第一个参数决定是否执行 JMS 会话,第二个参数指 示消息确认模式。在本样例中,不执行会话,而是在接受消息时自动确认会话。

您还有必要创建一个用于将消息发送到目的地的 MessageProducer。最后一步是创建 JMS ObjectMessage 并设置请求数据为消息。然后将消息发送到消息队列。

// Get queue connection factory QueueConnectionFactory qFactory = (QueueConnectionFactory)jndi.          lookup("webTrackerConnFactory"); // Get queue Queue queue = (Queue)jndi.lookup("webTrackerQueue"); // Get queue connection QueueConnection qConn = (QueueConnection)qFactory.          createConnection(); // Get session Session session = qConn.createSession(false,        Session.AUTO_ACKNOWLEDGE); // Set the JMS message ObjectMessage msg = session.createObjectMessage(); msg.setObject(data); // Send JMS message session.createProducer(jmsLoc.getMessageQueue()).send(msg);

使用GlassFish实现JMS消息传递(5)

时间:2011-07-28 Deepa Sobhana

消息驱动 Beans

消息驱动 bean 将作为 JMS 消息的侦听器。当消息到达队列时,容器调用 MDB 的 onMessage() 方法 。该方法将消息转换为数据原始消息类型(也就是,ObjectMessage ),然后进行格式化并永久保存到数据 存储区。MDB 实现 MessageDrivenBean 界面和消息类型支持的 MessageListener 界面(可选);也就是 ,如果 bean 支持 JMS,javax.jms.MessageListener将是要实现的界面。

下面给出了接收 JMS 消息的代码:

public void onMessage(Message message) {        if (message instanceof ObjectMessage) {     RequestData data = (RequestData)((ObjectMessage)message).               getObject();     // persist data    } }

如果您正在使用 Java EE 5,MDB 可以使用 @MessageDriven 注释进行注释。该注释包含一个 mappedName 元素,该元素指定 bean 将要侦听的消息队列的 JNDI 名称 。MDB 可以使用 @Resource 注 释注入 MessageDrive

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号