用于分类消息的方法和系统的制作方法

文档序号:7666566阅读:245来源:国知局
专利名称:用于分类消息的方法和系统的制作方法
技术领域
本发明总的涉及使用标准通信协议通过网络通信的万维网(world wide web)计算机系统,更具体地,涉及根据针对消息传送被分段的接收消息的优 先级来将它们分类,或进行排队以随后进行转发。在使用TCP/IP格式通过网 络传送时所使用的特定通信协议是公知的公共对象请求代理架构(CORB Object Management Group的注册商标)和标准通用全球协议(General Inter-Orb Protocol, GOIP ),并JU皮称为HOP ( Object Management Group的 注册商标)。
背景技术
在CORBA标准的上下文中,经常出现(特别是在大数据报的示例中) 由于通信网络可承受的最大传输单元大小的原因在传输期间消息被分段的情 况。在ORB (对象请求代理)接收到被这样分段的消息,其中根据消息的优 先级来对它们进行处理,以立即传送到客户端,或排队以随后进行传送。普 遍实践了在诸如网络之类的分布式环境中运行的ORB之间交换分段信息 (fragmented message )。然而,分段消息明显使针对消息区分优先级次序的目 的而截取(intercept)并分类在它们中包含的请求,以及在ORB中进行排队 而不明显修改处理代码的任务更加复杂。当前,为了分类分段110P⑧消息, 必须改变将在ORB中的低级代码以将未分段消息前向传送到高级分类处理 代码,并且需要改变在该级的代码以处理未分段消息。
如熟悉ORB的CORBA标准架构的那些人将容易地理解的那样,在ORB 的标准架构中存在7个有些模糊(indistinctly)定义的处理级。本发明通过在 ORB中的处理级之间截取消息,标记截取发生的当前数据流位置,发出消息 读取命令,然后分析消息控制区域,然后将数据流指针重置为原始截取位置,
然后通过将消息前向传送到用于该处理的更高代码级来将消息排队以便随后 传送,或将其转发以便立即处理,来解决了在ORB中的分段消息区分优先级 次序和排队问题。这避免了不得不过度修改组成CORBA标准ORB的现有代
码级的问题,并且由于现有代码级保持不变,因此具有对于现有代码级透明
和不可见的附加优点。本发明在CORBA标准架构模型中的代码低级和高级 之间添加了新的、中间的处理阶段。

发明内容
在ORB内的消息数据流中所选择的分类截取点上,新分类处理代码标记 当前数据流位置,并且发出 一个或多个消息读取命令来收集消息头部和控制 区域信息。 一旦完成消息读取功能,分类处理代码使用整个消息头部来分类 请求,并且取代其片段进行控制。然后通过排队和区分优先级次序处理来存 储针对消息的分类信息,以随后使用。当准备好排队和区分优先级次序处理 以分派消息时,可以将消息发送到ORB内的更高级处理,其中更高级的消息 处理代码将处理消息,而在向更高级传送之前完全不知道消息已经被分类和/ 或排队或区分优先级次序。


参照附图,本发明的以上和其它目标将在下面的进一步描述中变得更加 清楚,在附图中
图1示意性图解在通过网络的传输处理期间已经被分段的nop⑧消息的 一4殳结构。
图2是用于处理分段消息的现有ORB数据流的程序流程图,其中该程序 流程不具有提供消息的区分优先级次序和/或排队以向应用程序或客户端进
行传送的能力。
图3示意性图解根据本发明修改的ORB数据流的一般结构,以显示在 ORB中的现有消息头部处理器级和现有请求处理器级之间包括新的所引入的 中间级处理。该新的中间级处理执行请求或消息的分类和区分优先级次序和/ 或排队。
图4详细图解在本发明优选实施例中的中间代码级的示意性逻辑和流程。
具体实施例方式
将参照在上述附图中所示的优选实施例详细描述本发明。
返回到图l,显示了 110P⑧消息的结构的示意性表示。该消息包括消息
头部部分,其指示该消息实际上是GIOP消息。其包含GIOP版本号标识符、
消息类型标识符、用于指示消息的大小的标识符部分,并且依赖于正在使用
比特标记字段。GIOP版本l.O需要比特顺序标识符,而GIOP版本l.l添加 了对消息分段的支持,并且GOIP版本1.2添加了对双向通信的支持。版本 1.1和1.2向后兼容较早的版本。
如图l所示,消息头部之后是控制区域。控制区域包括向接收器指示该 消息是请求、应答、取消请求、定位请求、定位应答、封闭连接请求(close connection request )、消息错误或片段标识符的7个不同控制类型标识符之一。
在控制区域之后是包括对于在控制区域中定义的特定类型消息来说是特 定的数据的用户数据或"消息"区域。
以二进制格式,通过头部包括四个ASCII字符G I O P的事实来容易地 识别GIOP消息结构。这之后是首先定义主、然后定义从版本号的两个字节。 这之后是定义消息标记的字节,其最低有效位标识用作O (bigendian)或1 (little endian)的字节排序。而这之后是将消息类型(图l的控制区域)定 义为应答、请求、分段等的一个字节。这之后经常是指示不包括头部部分的 消息大小的四字节字。
在图1中由指针标识符P-1、 P-l、 P-2等(结束于P-n)指示消息结构中 的消息头部、控制区域和数据数据区域的边界。在图l的示意性消息结构下 任意显示的是一些图解消息片段,F-l、 F-2、 F-3、到F-n。应该注意的是消 息片段的边界可以重叠或包括少于图1的示例性消息结构中的头部部分、控 制区域部分和用户数据部分的全部内容。这意味着如果整个消息应该包括诸 如EJB名(Enterprise Java Beans )、方法名、源/目标主机名、端口号、应用 程序名、服务环境之类或更多的分类数据元素,则将不能从消息的仅仅一个 片段立即获得分类信息,并且在ORB中可能要求更高或更低级处理代码被修 改,以便适当提取并利用分类内容。
在本发明的优选实施例中,针对随后使用的目标消息通过添加为ORB 中常规实施的处理级之间的中间处理步骤的排队和区分优先级次序处理来存 储该分类信息。这将在下面变得清楚,并对其进行更详细的解释。
转到图2,图解在ORB内的现有处理部分的示例逻辑流程。连接处理器
61从将ORB与物理网络对接的其它低级处理接收消息数据流。连接处理器将 所接收到的消息数据前向传递到消息头部处理器2,其对在图1中有在指针 P-0和P-l之间的数据区域指示的信息进行操作。如果由消息头部处理器2标 识该请求,则其将该请求传递给请求处理器3。参照图l的图示,请求处理 器3对指针P-1和P-2之间的消息部分进行操作。请求处理器可能需要更多 的数据来完成其操作,并且通过其与需要更多数据处理器5 (NeedMoreData handler)进行交换而示出该可能性,该更多数据处理器5经过方框(box) 6 检查来确定更多的所需的数据是否可用,如果不可用,则在方框7中发出读 取下一片段命令,直到在另一片段中发现所需的数据为止,然后经由路径通 过需要更多数据处理器5将其返回到请求处理器。当请求处理器3完成其功 能时,其将消息前向传递给应用程序或客户端4以在那里使用。应用程序或 客户端可以要求更多的数据,并且其以与针对请求处理器描述的方式类似的 方式与需要更多数据处理器5对接。
将从以上图2的描述注意到,应该需要分类和/或区分优先级次序功能, 在如图2部分图解的现有ORB中没有实现这个功能的设备。如果要包括分类 和区分优先级次序处理,则这意味着必须将某些部件添加到消息头部处理器 2或添加到请求处理器3或二者。然而,这将意味着对现有ORB代码的主要 修改,这不是一项轻松承担的任务,尤其是在将消息分段时。
这里,本发明通过在ORB中的消息头部处理器2和请求处理器3代码级 之间(某种程度上任意地)截取消息流而整体上减轻该要求。
在图3中,本发明的分类处理器8截取消息头部处理器2和请求处理器 3之间的数据流。虽然这可能引起来自ORB中指示的两个级之间的平滑数据 的短暂中断(brief hiatus ),但是这对于消息头部处理器2或请求处理器3均 不可见。
在图4中显示本发明的分类处理器8的实施例的细节。转到图4,分类 处理器8的方框9从图3的头部处理器2接收数据流,并且标记所截取的数 据开始的流位置。接下来,分类处理器8分析在标记之后接收到的消息片段 来确定是否已经找到图1所示的消息的控制区域。如图所示,这在方框10中 完成,如其中所示,如果还未找到控制区域,则其引起在方框11中读取下一 片段命令的发送,并且等待从头部处理器2接收该片段。当已经接收到足够 的数据来获得消息的控制区域时,在方框12中所示,可以关于请求类型将消
息分类,然后如方框13所示,将数据流指针或标记重置来从原始截取点前向 传送数据流来进行进一步处理。
根据在方框12中找到的分类信息,如方框14所示,可以确定用于立即 或随后向客户端或应用程序传送的信息的区分优先级次序。如果从方框12的
序或客户端传送,则如方框20所示向请求处理器3转发数据流。然而,如果 分类信息由于较低的优先级等而指示延迟的传送,则暂停所截取的数据流, 并且在方框15中排队,该方框15将其添加到由方框17中的队列监视器监视 的方框16的请求队列中,直到请求的优先级与将要被接下来传送到应用程序 或客户端的请求匹配为止,于是在方框18中从队列移除被排队的请求,并且 如方框19所示将其传送到请求处理器3。
返回到针对方框9的优选实施例的解释,实际上通过在存储器中保存当 前读取位置指针来实现标记其中数据被截取的数据流的功能。通常,由于通 过接收处理线程接收数据字节,因此存在与其中加载所接收到的数据的数据 緩冲器相关的接收指针。该指针告诉接收处理线程在緩冲器中将接下来顺序 接收到的数据字节插入到哪里。接收线程仅有的功能是将所接收到的字节加 载到接收緩冲器中。然而,第二线程,即工作线程,使用读取指针来告诉工 作线程缓冲器的下一位置,从该位置进行读取来获得数据的下一字节。该读 取指针是当本发明的优选实施例截取数据流用于分类和区分优先级次序处理 时保存的值。图4的处理继续从接收緩沖器进行读取,直到已经读取足够的 消息来使分类和区分优先级次序发生,并且如上所述,基于该分析,将该消 息前向分派给请求处理器3或排队以随后进行分派。当通过将读取指针值提 供给请求处理器来分派该消息时,将读取指针恢复到其原始"截取"值,以 进行其操作。请求处理器不知道消息可能已被截取、可能已被排队并保存一 段时间,然后将该消息传送给该处理器,并且不需要修改头部处理器级2或 请求处理器级3。虽然针对分段消息的处理已经提供了该描述,但是其可以 同等地应用到未分段的消息,并且在ORB中提供添加消息的区分优先级次序 和/或排队的方便方式,而不需要修改任何现有ORB编程。
如本领域技术人员将理解的那样,本发明的技术使能ORB中的分段或未 分段消息的分类和区分优先级次序,而无需修改任何现有ORB代码级,并且 透明地执行其功能,使得接收较高级ORB代码在该级接收到消息时不知道已经发生了分类或区分优先级次序。存在可以以该相同的方式至此能够的其它 变型或功能,因此在所附的权利要求中描述和阐明的特征意欲描述而非限制。
权利要求
1.在ORB中分类消息的方法,包括步骤在ORB中截取处理级之间的消息数据流;标记在其上发生所述消息的截取的数据流位置;分析所述消息数据流来确定是否已经获得消息头部控制区域,并且如果仍未获得所述控制区域,则发出数据读取命令,直到已经获得所述控制区域为止;使用在所述控制区域中的数据来分类所述消息,并且将数据流标记重置为原始截取点。
2. 如权利要求l所述的方法,还包括步骤根据其分类将所述消息分派给在所述ORB中的下一代码级,以进行处理 或排队所述消息用于随后分派。
3. 如权利要求l所述的方法,还包括步骤响应于所述分类步骤,根据 在所述分类步骤中确定的其优先级来在队列中暂停所述消息以随后分派。
4. 如权利要求2所述的方法,还包括步骤响应于所述分类步骤,根据 在所述分类步骤中确定的其优先级来在队列中暂停所述消息以随后分派。
5. 如权利要求4所述的方法,还包括步骤监视在所述ORB中的后续消息流,并且只要所述消息的优先级超出在所 述ORB中流动的所述监视的消息的优先级,就从所述队列中移除所述暂停并 排队的消息,并且将其分派给所述ORB的下一代码级。
6. 如权利要求1到5中任意一个所述的方法,其中 在所述ORB中的代码的消息头部处理器级和请求处理器级之间执行所述消息数据流的所述截取。
7. —种在ORB中用于分类消息的系统,包括数据截取装置,用于在ORB中的处理级之间截取在ORB中流动的消息 数据流;标记装置,用于标记在其上所述截取装置截取所述消息数据流的数据流 位置;分析装置,用于检查所述消息数据流来确定是否已经获得消息头部控制 区域,并且如果仍未获得所述控制区域,则发出数据读取命令,直到已经获得所述控制区域为止;分类装置,用于使用在所述控制区域中的数据来分类所述消息,并且将 数据流标记重置为原始截取点。
8. 如权利要求7所述的系统,还包括用于根据其分类将所述消息分派给在所述ORB中的下一代码级,以进行 处理或排队所述消息用于随后分派的机制。
9. 如权利要求7所述的系统,还包括用于响应于所述分类机制,根据在所述分类机制中确定的其优先级来在 队列中暂停所述消息以随后分派的机制。
10. 如权利要求9所述的系统,还包括监视机制,用于监视在所述ORB中的后续消息流,并且只要所述消息的 优先级超出在所述ORB中流动的所述监视的消息的优先级,就从所述队列中 移除所述暂停并排队的消息,并且将其分派给所述ORB的下一代码级。
全文摘要
通过在ORB内截取消息数据流,标记当前数据流位置并发出足够的读取命令来收集消息头部和控制数据信息来实现在ORB中的分段消息的区分优先级次序。然后,可以使用在控制区域中的数据来执行优先级的分类,以分类请求。通过排队和区分优先级次序处理来存储针对消息的分类信息以随后使用,并且将数据流标记重置为原始位置。当排队和区分优先级次序处理准备好分派消息时,可以将消息发送给ORB内的更高处理级,其中更高消息处理代码级将处理该消息,在传送给更高级之前完全不知道消息已经被分类和/或排队或区分优先级次序的事实。
文档编号H04L12/56GK101207574SQ20071018673
公开日2008年6月25日 申请日期2007年11月16日 优先权日2006年12月22日
发明者加布里埃尔·G·蒙特罗, 布赖恩·K·马丁, 查尔斯·P·弗里卡诺, 阿迪特亚·A·德塞 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1