面向消息的
中间件(MOM)已经面市多年。在1998年10月,Sun Microsystems公司的Java消息服务(JMS)融入业界标准。该标准在编 程
接口级描述如何从Java应用
访问消息传送中间件。JMS的两个主 要抽象是“主题”(发布/订阅消息传送)和“队列”(点到点消息传送)。 虽然该标准描述了至消息传送中间件的接口,但是未
指定中间件的 实现。也未指定无线移动装置的集成(诸如电话、寻呼机、个人数字 助理或者膝上型计算机)。
现有消息传送中间件允许通过有线网络(以太网或令牌环)从非移 动装置(个人计算机或
服务器计算机)访问中间件。这些网络一般运行 诸如TCP/IP、HTTP或SSL之类的通信协议。支持无线移动装置则 要求中间件的厂商在无线传输协议(如WAP、GSM、SMS、GPRS或 UMTS)之上实现消息传输协议,以及将此消息传输协议集成到中间 件中。
由于如下原因而导致适用性的局限:
·JMS消息传送中间件的
现有技术水平需要比移动装置中可用 的存储容量更多的计算机存储容量。
·在JMS消息传送中间件产品的现有技术水平中,不支持时常 与企业网断开的移动装置。
·JMS消息传送中间件产品的现有技术水平不支持诸如WAP、 SMS、GPRS或UMTS之类的无线协议,除非TCP/IP、HTTP或SSL 协议是在这些无线协议之上使用。
·虽然JMS消息传送中间件产品的现有技术水平支持诸如 TCP/IP、HTTP或SSL之类的通信协议,但是不支持任何其他通信 协议。
此外,还有相当大的性能影响,因为TCP、HTTP或SSL是为 有线网络设计的,因此在无线网络上表现得并不好。
发明概述
因此,本发明的第一个目的是提供一种用于在充当客户机且运 行于移动无线装置上的应用与运行于有线网络的计算机上的应用之 间传递数据的系统。本发明的另一个目的是提供一种用于在充当客 户机且运行于移动无线装置上的应用与运行于有线网络的计算机上 的应用之间传递数据的方法。本发明的又一个目的是提供一种可装 入计算机
存储器的
计算机程序,该程序可用于在移动无线装置上的 客户机与运行于计算机上的应用之间传递消息。本发明的再一个目 的是提供一种计算机程序产品,它包括计算机可用媒体,所述计算 机可用媒体上具有用于在连接到有线
计算机网络的计算机上实现的 计算机可读程序代码装置。本发明的再一个目的是提供一种直接可 装入移动装置的存储器并且使所述移动装置能够访问现有技术状态 的消息传送中间件产品的计算机程序,而不需要将消息传送中间件 完全装入移动装置的存储器中。
本公开中概述的
消息传送代理系统是一种大的技术改进,使现 有技术水平的消息传送中间件产品的用户可以通过任何无线传输协 议向移动装置发送消息和从移动装置接收消息,而不需要将现有技 术水平的消息传送中间件装入移动装置的存储器。
用于运行所述
消息代理安装的系统包括由计算机程序来实现的 消息代理,而且系统体系结构包括至少一个可插入协议适配器。在 本发明的最佳
实施例中,代理还包括至少一个可插入
数据库适配器。
本发明还包括可直接装入移动装置的存储器中的薄消息客户机 计算机程序。此薄消息客户机程序通过将代理计算机程序用作所述 薄客户机与面向消息的中间件之间的中介并且由此采用至少一种无 线传输协议,使移动装置可以根据现有技术水平与面向消息的中间 件交换消息和命令令牌。所述薄消息客户机计算机程序实现至少一 种可插入协议适配器的系统体系结构。最好是,它还实现至少一种 可插入数据库适配器的系统体系结构。
根据第一最佳实施例,代理计算机程序是可安装在计算机上用 于实现与现有技术水平中间件的接口的程序模
块。但是,根据另一 个实施例,所述代理可以被直接集成到中间件中。这样代理计算机 程序就成为
修改后的中间件软件工具的一部分。
附图简介
下文参考附图描述本发明的实施例的实例。图中:
图1给出了根据本发明的系统的最佳实施例的
框图,以及
图2表示根据本发明的方法的实施例的UML序列示意图。
最佳实施例的描述
现在参考附图,图1给出了本发明的最佳实施例的框图。它更 具体地表示了装在非移动计算机和移动无线装置上的软件工具的安 装,此安装包括:
·消息代理1;
·通过无线通信协议链接到代理1的薄JMS消息客户机2、2′、 2″;
·根据现有技术水平的面向JMS消息的中间件3;以及
·面向JMS消息的中间件客户机4。
消息代理1可以与面向JMS消息的中间件3分开设置,也可以 集成在其中。
此框图仅仅是消息代理
基础设施布局的一个实例。在具体安装 中可能存在任何数量的消息代理、薄JMS消息客户机、面向消息的 中间件产品以及面向消息的中间件产品客户机。
消息代理1可以在常规计算机网络服务器上实现,例如在 Windows-NT服务器上实现,并且可以例如在后台运行。它维护客户 机连接,维护客户机对JMS主题和队列的订阅,接收和转发JMS消 息,并且在其数据库中存储JMS消息,使得它们在客户机与代理断 开时不致丢失。
消息代理1包括至少一个可插入传输协议适配器。图1表示六 个特定无线传输协议适配器(WAP 1a、UMTS 1b、HTTP 1c、DAB/GSM Data 1d、SMS 1e、GPRS 1f)的实例。还可以有任何数量的附加无线 协议适配器1g。可插入协议适配器使消息代理可以采用任意的无线 协议向消息客户机发送消息和从其接收消息。协议适配器实施现有 的传输协议,诸如GPRS或TCP/IP,并且在现有传输协议上还提供 了附加功能。此类附加功能的实例包括消息的数据加密和获得保证 的递送。一种协议适配器被分为一个或多个协议对象。每个协议对 象提供此协议适配器所提供的功能性的一部分。例如,协议对象可 以对数据加密,或者压缩数据,或者
请求数据的发送方重传已在网 络上丢失的消息。
消息代理1还包括数据库适配器。这使代理可以将消息和客户 机订阅信息存储到任意数据库中。
启动时,消息代理1读取它的配置数据,并将所有配置的协议 适配器初始化。它还将该代理已知的所有消息客户机的主题和队列 订阅初始化。在运行时,可以启动附加协议适配器,或者可以停止 正在运行的协议适配器,而不中断消息代理业务(但是,如果停止一 种特定协议适配器,则基于此适配器的业务不再可用)。在运行时, 可以将附加客户机连接到该代理,也可以将现有客户机与代理断开。
各个薄JMS消息客户机2、2′、2″被安装在移动无线装置中,诸 如
移动电话、具有无线
调制解调器的小的膝上型计算机、掌上设备 或者任何其它包含处理器、存储器和用于无线通信的通信装置的设 备。它包括JMS程序设计库,此JMS程序设计库与现有技术水平的 消息传送中间件3所使用的程序设计库的至少一部分完全相同或相 似。此薄JMS消息客户机库小得足以装入具备有限存储和处理能
力 的移动装置的存储器中。
薄JMS消息客户机库的这样小的占用区是这样实现的:将JMS 客户机应用程序应该执行或维护的大多数计算和大多数状态信息从 客户机卸载给代理。这种薄JMS消息客户机主要由JMS接口构成。 实现接口所必需的大多数Java代码在代理上运行,而不在薄JMS消 息客户机上运行。代理还维护与该客户机相关的JMS状态信息。例 如,代理存储尚未被客户机确认的JMS消息。薄JMS消息客户机也 不需要存储订阅的队列和主题的名称。此信息只被代理存储。在内 部,薄JMS客户机使用代码信息、如数字值来指代主题和队列。此 代码信息可以小得只有一个字节。这些队列和主题的实际表示被包 含在代理中,对于每个主题或队列,这些表示可以为数百或数千字 节。当薄JMS客户机希望发布有关某个主题的消息时,该客户机向 代理只发送JMS消息和有关该主题的代码信息。所有这些都显著地 减少了薄JMS客户机的占用区。
薄JMS消息客户机2还包含命令和消息传输系统,该系统包括 用于将客户机希望订阅什么JMS主题和队列通知给代理的传输协议 适配器2a、2a′、2a″。
消息客户机2、2′、2″还包括数据库适配器。这使客户机能够使 用任何数据库来本地存储JMS消息和其它信息。消息数据库是必要 的,它确保客户机提交的JMS消息和JMS订阅在客户机因缺少无线 网络
覆盖或代理未运行而无法与代理通信的情况下不致丢失。
消息客户机2、2′、2″利用其传输协议适配器2a、2a′、2a″链接 到消息代理1。如果匹配的协议适配器正在代理上运行,则连接成功。 消息客户机和消息代理之间的进一步通信是根据JMS的常用发布/订 阅或点到点模型来进行的。
JMS主题或JMS队列的命名和管理与所涉及的协议适配器无 关。如果客户机采用“WAP”协议适配器连接到代理,则它可以与 利用“GPRS”协议适配器连接的客户机进行通信,前提是这两个客 户机都使用相同的JMS主题或队列。
协议适配器封装至少一个需要实现以下目的的逻辑:
·与诸如HTTP、WAP或GSM Data的传输协议的接口。
·指定和确保消息传送业务的
质量。
某些传输协议以“尽量发送”的传递方式工作。因此,单单与 某个特定协议适配不总是足够的(除非“尽量发送”是所期望的消息 传送保证)。因此,协议适配器同时包括传输协议机制和提高基本网 络传递保证的业务质量机制。
网络可靠性通过如下方式来提高。发送协议适配器对所有呼出 消息附加一个可靠性指示符、如序列号。该可靠性指示符在发送消 息时以预定方式改变。例如,在每次发送消息之后序列号按1递增。 接收方应用使用呼入消息的可靠性指示符来检测是否丢失消息。在 所述实例中,当刚接收的消息的序列号大于前一消息的序列号加一 时,就是这种情况。若消息丢失,则接收方向发送方发送命令令牌, 指示将要重传哪个消息。然后,发送方重传所请求的消息。发送方 将消息保存在本地数据库,从而能够满足消息重传请求。
数据库适配器封装至少一个实现如下目的所需的逻辑:
·与诸如PointBase、Oracle、DB/2或Sybase之类的数据库产品 实现接口,或者与诸如JDBC或ODBC之类的便携式数据库访问软 件实现接口。
·存储和检索JMS消息和JMS订阅请求。
消息客户机2实现例如Sun Microsystems的JMS API。它与代 理配合工作以实现完整JMS功能性。当客户机希望订阅JMS队列或 主题时,它的命令子系统创建包含订阅信息的命令令牌。然后利用 无线通信将该命令令牌发送到代理。为此,该令牌通过客户机端的 协议适配器2a、2a′、2a″发送,并被代理端的协议适配器1a、1b、1c、 1d、1e、1f或1g接收。
在接收到命令令牌时,代理1读取该令牌中所含的订阅信息, 并且代表客户机通过现有技术水平的中间件执行JMS订阅。
当客户机希望取消JMS主题或队列的订阅时,当客户机希望发 送JMS消息时,或者对于客户机所请求的任何其它JMS动作,都会 产生另外的命令令牌。
当在代理1代表客户机订阅的主题或队列中接收到JMS消息 时,该代理创建包含该JMS消息的数据的消息令牌。然后利用无线 通信将消息令牌发送到客户机2。为此,该令牌通过代理端的协议适 配器1a、1b、1c、1d、1e、1f或1g发送,并被客户机端的协议适配 器2a、2a′、2a″接收。
当薄JMS消息客户机2接收到这种消息令牌时,客户机创建JMS 消息。然后,客户机对该JMS消息进行处理。例如,该消息可以在 图形
用户界面上被显示。
按照现有技术水平的面向JMS消息的中间件3可以是任何JMS 消息传送中间件产品,例如IBM公司的MQSeries、SoftWired公司 的iBus或Progress公司的SonicMQ。
面向JMS消息的中间件客户机4是利用现有技术水平的面向JMS 消息的中间件3在非移动计算机(即连接到有线计算机网络的计算机) 上实现的客户机应用。还可以有一个或多个按照现有技术水平的面 向JMS消息的中间件客户机4。
对于描述不同实例之间的通信的实例,假定薄JMS消息客户机 2订阅主题T。此主题T可以随应用而定,表示股票报价的信息流、 体育新闻的信息流,或者表示承载数字音频的传输信道。当现有技 术水平的面向JMS消息的中间件客户机4对主题T发送一个JMS消 息时,该消息首先被传送到现有技术水平的面向JMS消息的中间件 3。然后代理1代表薄客户机2接收该消息。接着,代理1以消息令 牌的形式利用其传输协议适配器1a、1b、1c、1d、1e、1f或1g之一 将该JMS消息发送到客户机2。最后,客户机2接收到有关主题T 的JMS消息,就像是它在直接访问现有技术水平的面向JMS消息的 中间件3。
为了详细表示此过程,下面参考图2说明在运行于移动无线装 置上且充当客户机的应用与运行于非移动计算机上的应用之间传递 信息的方法的实例。
图2的顺序图说明箭头所表示的交互作用,这发生在移动客户 机和代理之间,在一次信息交换过程中,即,在移动客户机为主题T 创建JMS TopicPublisher以及随后发布关于主题T发布的消息的过程 中。在该图中,移动客户机由阴影填充的虚线框表示。该图右侧的 垂直线表示消息代理。方法步骤由不会与图1的参考标号混淆的数 字来表示。
1.当接收到应用关于JMS发布/订阅主题“T”的请求时,创建 JMS TopicPublisher对象“Pub”。然后,“Pub”将使移动客户机应 用能够发布有关主题“T”的JMS消息。
2.“薄消息客户机库”创建命令令牌,其中包含代理为了代表客 户机分配JMS TopicPublisher所需的信息。该命令令牌包含表示“创 建发布者”命令的代码信息(例如一个字节的数字)。它还包含发布者 应受其限制的JMS主题“T”(例如一个字节的数字)以及表示发布者 的信息代码“P”(例如一个字节的数字)。
3.代理代表薄客户机为主题“T”创建JMS TopicPublisher“Pub”。
4.代理将TopicPublisher“Pub”与代码信息“P”相关联。这可 以通过利用代码信息“P”作为搜索关键字将TopicPublisher“Pub” 存储在数据字典中来完成。
5.客户机应用程序创建包含应用特定信息(例如订书单)的JMS 消息“msg”。当然,此步骤以及随后的步骤6可以在步骤3和步骤 4之后执行,也可以与它们同时执行。
6.客户机应用现在利用TopicPublisher“Pub”发布有关主题“T” 的JMS消息“msg”。
7.“薄消息客户机库”创建命令令牌,其中包含代理为了利用 现有技术水平的JMS中间件发布消息所需的信息。该命令令牌包含 表示‘进行发布’命令的代码信息(例如一个字节的数字)。它还包含 TopicPublisher的代码信息(代码″P″)以及消息“msg”。
8.代理检索与代码“P”相关联的TopicPublisher“Pub”。此发 布者“pub”是在步骤4中与代码“T”相关联的。
9.最后,代理利用现有技术水平的JMS中间件发布有关主题 “T”的JMS消息“msg”。具体来说,代理将有关主题“T”的消 息“msg”转发到使用JMS的现有技术水平的JMS应用程序。
所用术语的词汇表
TCP:传输控制协议
IP:因特网协议
HTTP:超文本传输协议
WAP:无线应用协议
WDP:WAP无线数据报协议
SSL:安全套接层
JMS:Java消息服务(http://java.sun.com/products/jms/)
PDA:
个人数字助理SMS:短消息业务
GSM:全球移动电信系统
DAB:数字音频广播
JDBC:Java数据库连接(http://java.sun.com/produets/jdbc/) ODBC:Microsoft的开放数据库连接 MOM:面向消息的中间件