文档介绍:6
应用程序设计
为了说明创建使用路由器和分解的自助服务程序中使用的技术,我们为此项目创建一个
示例应用程序。本章将讨论用于创建此应用程序的 Java 设计技术。
此处介绍的信息旨在补充《使用 WebSphere Application Server 的自助服务模式》编
号:SG24-6175。我们以那本书介绍的应用程序设计为基础,将设计延伸为包括消息发
送功能。为此,我们非常重视 Sun 的 Java 消息服务(JMS)在企业消息发送应用程序中
的作用。我们将探讨支持 API,如 Sun 的 Java 命名和目录接口。另外,还将介绍 WebSphere
的 JMS 侦听器,而 JMS 侦听器是 WebSphere 企业服务中扩展的消息发送支持的组成部
分。
本章最后将从实例应用程序抽取一个应用案例,并详细讲述该应用程序设计。
61
JMS概述
Sun Microsystem 的 Java 消息服务(JMS)是定义 Java 应用程序与企业消息发送中间件
(如 MQSeries)如何进行交互的 API。本节假定基本了解消息发送系统涉及的概念,并
着重介绍如何把这些概念映射到 JMSAPI。
消息模型
首先,了解消息发送模型的不同类型非常重要。每种模型在为该模型定义专用操作的
JMS 中有一组接口。有两种体系结构可用于消息发送应用程序:点到点(PTP)和发布
/预订(pub/sub)。
点到点应用程序是根据以下观点创建的:每个消息均以特定队列为其地址。接收端应用
程序从该队列获取消息,并对其进行相应处理。在 JMS 中,PTP 类型带有“队列”前
缀,如下表所示。
JMS 父级 PTP 类型
ConnectionFactory QueueConnectionFactory
Connection Que ueConnection
Destination Queue
Session QueueSession
MessageProducer QueueSender
MessageConsumer QueueReceiver
发布/预订应用程序则是按照以下思想创建的:根据消息内容路由消息。消息被发送到
消息代理,该消息代理根据其内容把消息路由到适当订阅者。然后,订阅者就可对该消
息进行适当处理。在 JMS 中,发布/预订类型带有“主题”(Topic)前缀。
在本书中,我们重点考察 PTP 应用程序。
62
消息组件
由于 JMS 是为创建、发送和接收消息而存在,因而您会认为消息是 JMS 的核心组件。
JMS 消息由以下几部分构成:
标题:包含识别和路由消息的信息。
属性:可以有选择地添加到消息的定制值。属性可以是:
- 应用程序特定的:添加到消息的属性由 JMS 应用程序使用。
- 标准:JMS 属性。
- 提供者特定的:某个消息提供者特有的属性。
正文:数据。
消息类型
JMS 提供五种不同专业的消息,以提供访问每个消息内容的不同操作。图 6-1 显示这
些类型。
图 6-1 JMS 消息类型层次
不同消息类型包括:
BytesMessage:包含访问字节流的操作。此消息类型将与任何现有消息格式相匹配。
StreamMessage:包含访问 Java 原始值流的操作。
ObjectMessage: 包含访问序列化 Java 对象的操作。如果应用程序设计需要序列
化一个以上的对象,那么就请使用“集合”(Collection)对象。
63
MapMessage:包含从消息正文访问一组键值对的操作。关键字必需为字符串,值
必须为原始类型。
TextMessage:包含访问作为字符串的消息正文的操作。在实例应用程序中,我们
把 TextMessage 用作传输消息(用 XM 进行编码)的手段。
目标类型和子类型
下一个要掌握的概念是“目标”类型和子类型。基本上,目标是消息的容器。消息从一
个应用程序发送到目标,然后由另一个应用程序从目标中将其删除。
熟悉 MQSeries 的人也应该熟悉术语“队列”,而队列就是消息的目标。JMS 把队列称
为 PTP 应用程序中目标的一种特殊类型。按照消息发送模型,目标既可称为队列(用于
PTP),也可称为主题(用于发布/预订)。
另外,每个消息发送模式有一个更加专业化