用JMS编程.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:58 大小:383KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

用JMS编程.pdf

用JMS编程.pdf

预览

免费试读已结束,剩余 48 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

8用JMS编程在本章中,我们将讨论Java消息发送服务(JMS)接口概念和MQSeries实施,以及如何使用JMS编程。我们将在消息发送编程模式的上下文中探讨JMS概念。2358.1什么是JMS?与JDBCAPIfordatabases一样,JavaMessageServices(JMS)是消息发送的标准API。JMS规范(1.0.2)由SunMicrosystems开发,IBM和其他企业消息发送销售商、事务处理销售商以及RDBMS销售商都积极参与了开发过程。JMS为Java程序与对消息发送系统对象进行各种操作的消息发送系统进行互动提供了一个常见的模型。程序对消息发送系统对象进行的常见操作包括创建消息、发送消息、接收消息以及从企业消息发送系统中读取消息。JMS为那些用Java开发的程序提供了一种访问这些消息发送系统操作的常见方法。JMS具有两种消息发送风格,或者说它具有两个域:一对一或点到点模型;发布/预订模型。JMS仅仅是种规范。每个企业消息发送系统销售商都必须就其特定的消息发送系统提供实施规范的类。在本章中,我们将描述JMSAPI的MQSeries实施、讨论JMSAPI概念和MQSeries的JMS实施能力,并讲解在可以利用MQSeriesJMS实施的不同情境中如何利用MQSeriesJMS。为什么要使用JMS?JMS标准非常重要,其原因在于:它是第一个获取广泛跨行业支持的企业消息发送API;它提供的标准消息发送概念和惯例适用于广泛的企业消息发送系统,因而简化了企业应用程序的开发;它可以利用现有的、企业证明成功可行的消息发送系统;它添加了完全用现有非JMS客户机解释的新JMS客户机,从而允许您扩展现有的基于消息的应用程序;它允许您可以编写便携性强的基于消息的商业应用程序。2368.2概述JMS是定义JMS客户机如何访问企业消息发送产品功能的一系列接口和相关语义。我们这里所描述的消息是指企业应用程序所使用的异步请求、报表或事件。它们既包含协同这些系统所需的重要信息;又包含着描述特定商业行为的精确格式化的数据。通过这些消息的交流,每个应用程序都能跟踪企业的发展。JMS定义了一系列常见的企业消息发送概念和功能。它最大限度地减少了Java语言程序设计人员在使用企业消息发送产品前必须学会的概念集。也最大限度地加强了消息发送应用程序的便携性。JMS标准虽然提供了独立于不同销售商的编程接口,但是并不定义出通讯协议。JMS模型JMS定义了消息传递服务的一般视图。理解该视图,并弄清它是如何映射到底层的MQSeries传输上的,相当重要。一般JMS模型是建立在Sun的javax.jms包所定义的接口上的,请见图8-1。237图8-1JMS模型连接连接提供了到底层传输的访问,并被用来创建会话。在MQSeries上下文中,连接提供了储存参数,如队列管理器名、远程主机名(在Java客户连接性中)等的地方。换言之,MQSeriesJMS连接一般都在Java虚拟机之外分配MQSeries资源。连接也支持同时使用。连接可以提供以下好处:包括与JMS供应方的开放式连接。它通常代表客户机和供应方服务端口之间的一个开放的TCP/IP槽;它的创建就是客户机认证发生之处;它可以指定唯一的客户机标识符;238它提供ConnectionMetaData;它支持可选的ExceptionListener。由于建立连接时完成了认证和通讯设置,因此连接相对来说是个重量级的JMS对象。大多数客户机都使用单一的连接进行消息发送。其他更先进的应用程序可能会使用几个连接。JMS并不为使用多个连接而设计原因;但是,这样做可能有操作上的原因。JMS客户机一般创建一个连接、一个或多个会话以及许多消息生成器和使用者。当创建连接时,它处在停止模式,这就是说没有消息再被送达。重点:连接是在停止模式中创建的。通常,直到设置完成前,连接都处在停止模式中。在完成时,将调用连接的start()方法,而消息则开始到达连接的使用者。此设置惯例可以在客户机仍在进行设置过程中尽可能减少异步消息送达所带来的任何客户机混乱。连接可以立即启动,而设置可在随后进行。这样做的客户机必须在设置过程中就准备好处理异步消息送达。提示:消息生成器可以在停止连接时发送消息。不是直接创建连接的,而是利用连接库建立的。库对象可以储存在JNDI名称空间中,从而将JMS应用程序与供应方特定信息隔离开来。连接库对象是利用MQSeriesJMS管理工具JMSAdmin创建的。