CN101420391A - 由触发器子系统提供专用及基于标准触发器的系统和方法 - Google Patents
由触发器子系统提供专用及基于标准触发器的系统和方法 Download PDFInfo
- Publication number
- CN101420391A CN101420391A CN200810214999.4A CN200810214999A CN101420391A CN 101420391 A CN101420391 A CN 101420391A CN 200810214999 A CN200810214999 A CN 200810214999A CN 101420391 A CN101420391 A CN 101420391A
- Authority
- CN
- China
- Prior art keywords
- trigger
- subsystem
- file
- measured
- dedicated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Holo Graphy (AREA)
- Detergent Compositions (AREA)
- Nitrogen Condensed Heterocyclic Rings (AREA)
Abstract
本发明涉及应用集成技术,特别涉及基于发布订阅模型(或其变体)的应用集成技术。在本发明中,触发器被用来建立可发布文件类型的订阅和指定处理通过该订阅接收到的文件的服务。一个基于标准的消息传输协议(如,JMS消息传输)作为专用消息传输协议的对等协议被基本上完全嵌入到集成服务器的触发器子系统中,从而使所有或者基本上所有可以通过专用协议实现的多功能能力都可以通过基于标准的消息传输协议来实现。特定实施例里,触发器可为JMS触发器。
Description
技术领域
本发明涉及应用集成技术,尤其涉及围绕发布订阅模型(或其变体)建立的应用集成技术。在本发明中,一基于标准的消息传输协议可以作为专用消息传输协议的对等协议被完全嵌入集成服务器触发器子系统中,从而使得所有或基本上所有可以通过专用协议实现的多功能能力都可以通过基于标准的信息协议访问。在本发明中,所述访问触发器子系统的触发器可为Java消息服务(JMS)触发器。
背景技术
现今的公司有责任为其各自企业内部的各种类型的集成化挑战实施解决方案。当中许多挑战会涉及应用集成的问题(如,在软件应用程序和/或其他系统之间的集成)并陷入陈规。
例如,第一领域涉及从一个系统到多个其它系统的相似业务对象的传播,例如,订单状态变化或产品价格变动。第二领域涉及为获得一个单一的视角,将两个或多个系统之间的相似业务对象同步化,例如,在多个应用软件中的用户、产品注册、产品订单,及产品的库存单元(SKU)信息的实时同步。这是需要集成解决方案的最常见的问题。在单向同步化里,通常有一个作为数据资源的系统(例如资源)和一个或多个作为同步化对象的资源。在双向同步化里,每个资源通常既是潜在的资源又是同步化对象。通常单一的资源不会作为主站数据资源。因而,任何资源的改变都会在其它的资源中反映出来。第三领域涉及把多个资源中的信息结合到公共目的系统中,例如,把药房顾客的记录、药方交易和网站数据传输到中心应用程序与数据库中。
多种工具被用来使用户能利用如发布订阅模型或其变体来设计与部署应对这些挑战的解决方案。发布订阅模型是一种特定的基于消息的解决方案,在该方案中,消息通过一消息代理进行匿名交换。产生需要被共享的信息的应用程序使该信息存在于他们发布到消息代理的特定类型的识别文件中。请求信息的应用程序订阅它们需要的文件类型。
在工作的时候,消息代理从发布者接收文件然后将其分发给订阅者,订阅应用程序利用该文件处理和执行工作,其可以向发布应用程序发送响应,也可以不发送。
在典型的系统里,一个集成服务器或运行在集成服务器上的应用程序把文件发布给代理。然后代理把该文件发送给位于其它集成服务器上的订阅者。集成服务器与代理共享一个快速、高效的流程以在整个系统内进行文件交换。
虽然这样的技术已成功地给上述挑战领域提供了解决方案,但是进一步提高还是有可能的。例如,集成服务器(IS,integration server)“触发器子系统”提供了消息处理(例如异步消息处理)的基础结构。然而,这种功能只有以通过专用消息传输协议(例如代理)传输消息才能实现。因此,用户目前不得不作出困难的设计决定,即选择多功能专用协议还是通用的基于标准的协议(例如Java消息服务,JMS)。
一种解决这种问题的方法涉及集成服务器的JMS适配器的使用。因此,专用“触发器子系统”(由集成服务器提供以进行专用消息传输)与独立的JMS适配器均提供给集成服务器。
然而,这种方法有点不完善。特别地,尽管JMS适配器能实现基于标准的的互通的消息传输,但“触发器子系统”的功能不能在结合JMS时得到充分使用。就是说,当用户使用JMS适配器的同时想要“触发器子系统”的扩展性能时,不得不在他们的应用程序中为每个新的应用自定义实现那些性能。这通常强加了有效配置和规划的要求,并导致过多的相同和/或相似功能的非基于标准的地实现。因为JMS仍在网络服务环境中使用的基于标准的过程中,这问题进一步恶化。本质上,这意味着如果要求有与专用代理的功能相当的功能,这些功能必须在应用服务层上一次又一次地实现。即使在这样的方法已实现过的地方,例如,因为企业在它们各自的组织、流程、需求、基础设施等方面都是不同的,它们并没被基于标准的。
因此,存在这样一个问题:没有一种单一的方式能将现行的“触发器子系统”及其所有的功能和基于标准的消息传输(例如JMS)连接起来。因此,在多功能专用协议方面和基于标准的通用消息传输协议方面(如JMS)之间需要有一个折衷。
因此,亟待一种改进的技术以在一个或多个上述领域和/或其它领域中提供应用集成解决方案。
发明内容
本发明的目的之一在于提供一个消息传输层,所述消息传输层为寻址应用集成挑战提供了一个多功能集,所述寻址应用集成挑战易从专用的和存在于应用层外的开放式消息传输结构中得到。在特定的实施例中,这样的消息传输结构可为“触发器”形式,及这样的触发器为对所述应用集成挑战的一种发布订阅类型的解决方案。本发明实施例中的触发器可为JMS触发器。
本发明的另一目的在于提供可以通过公共触发器子系统访问的平行子系统,该公共触发器子系统作为在各自触发器子系统之上的增值层。
本发明的再一目的在于把作为专用信息传输协议的等同体的JMS充分地嵌入到所述集成服务器触发器子系统内,从而全部或基本全部已有的功能得通过JMS实现。
本发明的又一目的在于提供一种消息传输层,使得不用集成服务器的特定适配器就能实现JMS通信。此外,本发明的消息传输层可避免JMS触发器本身的变化及减少应用服务级别上的自定义设计与实现的需要。
为了实现上述目的,本发明提供了一种适用于应用集成系统的触发器子系统。至少一个专用触发器子系统嵌入在所述触发器子系统中。至少一个基于标准的触发器子系统基本全部地嵌入在所述触发器子系统中。共用的触发器设备提供给至少有一个所述专用触发器子系统以及一个所述基于标准的的触发器子系统。至少一个所述专用触发器子系统和至少一个所述基于标准的触发器子系统为平行子系统。每一个所述专用触发器子系统和每一个基于标准的触发器子系统用于访问对应的触发器层。每个所述触发层用于提供具有与各自触发层相关的形式的触发器。所述触发器包括引起一个流程在该应用集成系统内或通过所述应用集成系统或其部件执行的指令。
本发明还提供了一种消息传输层,用于集成服务器或作为集成服务器系统的部件的集成服务器。触发器子系统包括至少至少一个嵌入在其内部的专用触发器子系统,至少一个基本完全嵌入在其内部的基于标准的触发器子系统,及所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统的共用的触发器设备。所述至少一个专用触发器子系统和至少一个基于标准的触发器子系统作为触发器子系统中的平行子系统。复数个所述触发层分别应用于每个所述专用触发器子系统和每个所述基于标准的触发器子系统。复数个消息传输应用程序接口层,该消息传输应用程序接口层应分别用于每个所述专用触发器子系统和每个所述基于标准的触发器子系统。每个所述触发层用于提供具有与各自触发层相关的形式的触发器。所述触发器包括引起一个流程在该应用集成系统内或通过所述应用集成系统或其部件执行的指令。
本发明还提供了一种配置应用集成系统的方法。提供一个消息传输层,该消息传输层用于集成服务器或作为所述应用集成系统的部件的一个集成服务器。在消息传输层里设置一触发器系统。在该触发器子系统中设置一专用触发器子系统。在所述触发器子系统里基本完全嵌入至少一个基于标准的触发器子系统。配置所述触发器子系统为所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统提供共用的触发器设备。提供复数个触发层,该触发层分别提供给每个所述专用触发器子系统和每个所述基于标准的触发器子系统;及以提供复数个消息传输应用程序接口层,该消息传输应用程序接口层分别提供给每个所述专用触发器子系统和每个所述基于标准的触发器子系统。所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统在所述触发子系统中为平行子系统。每个所述触发层用于提供具有与各自触发层相关的格式的触发器。所述触发器包括一个流程在所述应用集成系统内或通过所述应用集成系统或其部件执行的指令。
本发明还提供了一种基于发布订阅模型或其变体的应用集成系统的操作方法。所述方法包括:提供一个消息传输层,该消息传输层应用于集成服务器或作为所述应用集成系统的部件的一个集成服务器;所述消息传输层包括:一触发器子系统,该触发器子系统包括:至少一个嵌入其中的专用触发器子系统和至少一个基本全部嵌入其中的基于标准的触发器子系统,所述触发子系统用于提供所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统共用的触发器设备;复数个触发层,该触发层分别提供给每个所述专用触发器子系统和每个所述基于标准的触发器子系统,每个所述触发层用于提供具有与各自触发层相关的格式的触发器,在该触发器内设置用于建立可发布文件类型的订阅和指定一个或多个服务去处理通过所述订阅接收到的文件的指令。根据相应触发器中的所述指令向一个或多个订阅者发布一个或多个文件,并根据对应触发器中的所述指令处理每一个所述文件,其中,在所述触发器子系统中,所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统为平行子系统。
本发明可分开使用和/或结合应用,以进一步实现本发明中的其它实施例。
附图说明
为更好地及更完善地描述上述和其它特征及效果,以下结合实施例并配合附图详细予以说明。
图1为一个应用集成系统的的示意图。
图2显示了当连接到代理时,集成服务器如何把文件发布和投递到代理上。
图3显示了当代理不可用时集成服务器如何发布文件。
图4显示了当请求/回应同步的时候,集成服务器发布文件到代理并等待回应。
图5显示了集成服务器订阅被发布的文件的途径。
图6显示了集成服务器订阅被投递到默认客户端的文件的途径。
图7显示了本地发布的文件的发布和订阅途径。
图8显示了发布订阅模型集成解决方案的两端,其中可发布文件类型与相同的代理文件类型相关联。
图9为现有消息传输层的结构框图;及
图10为本发明消息传输层的一个实施例的结构框图。
具体实施方式
现在描述应用集成系统及其操作方法。容易知道,以下将以实施例加以描述但并不加以限制。确实,如下展示的实施方案反映了结合发布订阅以方法的常规技术提供由本申请的受让方部署的应用集成解决方案,所述技术可与本发明中的消息层、触发器或触发器子系统一起使用。
现在参考附图,图1为一个应用集成系统100的的示意图。其中展示了多个集成服务器102,每一个集成服务器102均和代理106通讯。图中显示了第一集成服务器102和第二集成服务器102’,所述第二集成服务器102’包括多个适配器108。图中还显示了一个集成服务器组群102”,其包括多个适配器108’。
一般而言,集成服务器是所述系统的中心运行部件。它充当着将要被集成的系统和应用软件的入口点,且是所述系统执行集成逻辑的主要引擎。它还提供了管理企业内外资源104(或成群的资源104’)的信息的有序处理的基础处理器和设备。集成服务器102发布文件至代理并从代理接收文件。
代理106形成所述部件的潜在的全面可升级的消息传输主干。它提供了执行异步的基于消息的解决方案,例如,请求/回应、发布和等待等等的基础结构,所述解决方案围绕发布订阅模型或其变体建立。
代理106在信息产生者(例如发布者)和信息消费者(例如订阅者)之间传送文件。因而,代理106接收、列队和投递文件。代理106维护一其识别的文件类型的注册表,同时维护对接收那些类型的文件有兴趣的订阅者清单。当代理106接收到一发布文件,它为该文件类型的订阅者将其排序。订阅者从这些队列中检索文件。这种动作通常引起订阅者系统处理所述文件的活动。
多个代理106可随意地提供给系统100。多个代理106以组群的形式运作,这种组群方式被称为领域,其允许几个代理106共享文件类型和订阅信息。
以下是对使用发布订阅模型的集成解决方案的基础构筑单元的描述。这些构筑单元包括,例如文件、可发布文件类型、触发器、服务、适配器通知单和标准文件。
在基于发布订阅模型的集成解决方案中,应用程序发布和订阅文件。文件是上述部件可用来封装和交换数据的对象。一个文件代表一个资源传输到组件的数据的本体。通常,它代表了一个业务事件,例如,定购货物(例如通过定单文件),运输货物(例如通过发料通知单),增加一个新员工(例如通过新员工记录)等。
每一发布的文件包括一封套。所述封套就像邮件消息的表头。所述封套记录了信息,例如,发送者的地址,文件发送的时间,序号和/或传送及控制的其它有用信息。所述封套包括文件及其在系统内传输的相关信息。
每个发布的文件都与一种可发布文件类型有关。可发布文件类型是一个指定的类概要的定义,该定义描述了一种特定的可被发布和订阅的文件的结构。一个可发布文件类型可在集成服务器内本地发布或被发布到代理。在一个包括代理的发布环境中,每个可发布文件类型一定是一个代理文件类型。代理的客户订阅可发布文件类型。代理使用可发布文件类型确定文件分配给哪些客户。
这里所描述的发布订阅模型的实施例里,触发器确立对可发布文件类型的订阅。触发器也指定了处理通过订阅而接收到的文件的服务。在触发器中,一个条件将一个或多个可发布文件类型与一个服务相关联。
服务是类方法的工作单元,它们包含集成服务器执行的程序逻辑。服务可用来执行操作,例如:从文件中提取数据,与后台资源通信,发布文件到代理,等等。当一个触发器建立,用户可以指定用于订阅的文件的服务。
每当一件特定的事件发生在适配器的资源里,适配器通知单通知系统。当特定事件发生在资源上,适配器通知单发布一个文件。每个适配器通知单都有一个相关的可发布文件类型。触发器可用来订阅与适配器通知单相关的可发布文件类型。例如,与触发条件中的可发布文件类型相关的服务基于适配器通知单的内容,可以执行一些额外的处理、更新和/或同步。
标准文件是文件通过系统时所呈现出来的基于标准的的表现。标准文件充当资源之间的中间数据格式。例如,从公司接收订购单的操作中,流程中的一个步骤就是将订购单文件转换为公司的标准订购单格式。这种格式叫做订购单文件“标准”格式。该标准文件被发布、投递以及传送到处理订购单的服务。
通过把文件转换成一种中立的中间格式,订阅者(如适配器服务)只须知道怎样把标准文件转换成需要的应用格式。如果不使用标准文件,每个订阅者不得不译出每个发布器的原文件格式。
一个标准文件是一个可发布文件类型。该标准文件可在建立发布服务时使用和在建立触发器的时候被订阅。在流程服务里,文件可以从一个申请的原格式映射为标准格式。
参考图2-7,展示了文件发布和订阅的路径。如上所述,集成服务器通过发布和订阅来交换文件。一个集成服务器发布文件,而一个或多个集成服务器订阅和处理该文件。一般来说,集成服务器与代理交互以发布和订阅文件。例如,一个集成服务器可以向代理发布文件,可以从代理检索文件和/或在本地发布订阅文件。
当集成服务器与代理相连接,集成服务器就能向代理发布文件。然后,代理把文件传送给所有的订阅者。三种发布路径的情景解析如下:文件被发布到代理,当代理不可用时文件被发布到代理,以及文件被发布到代理并等待回应(例如,在请求/回应情景中)。如果集成服务器没配置代理,所有的发布可能变成本地发布,而把文件投递给指定的接收者就不能实现。下面将详细地描述这种可能性。
图2说明了当集成服务器与代理相连时,集成服务器是怎样向代理发布或者投递文件。当集成服务器发送文件到配套的代理时,集成服务器可以发布或者投递该文件。当集成服务器发布文件时,它将广播所有的订阅者。代理将该文件传送给所有订阅了该文件的客户。当集成服务器投递文件时,投递请求识别文件的接收者。代理只把文件放在指定的客户队列里。
集成服务器102中的发布服务202发送文件到分配器204(或者当一事件发生在适配器监测的资源上时,适配器通知单发布一个文件)(S201)。在集成服务器102发送文件到分配器204之前,会根据其可发布文件类型验证该文件。如果文件是无效的,服务202会返回一个指示验证错误的异常信号。分配器204从连接池206里获得一连接208(S202)。该连接池206是一组预存的连接208,集成服务器102使用该连接208向代理106发布文件。为了向代理106发布文件,集成服务器102使用到默认客户的连接208。分配器204发送文件到代理106(S203)。
代理106检测该文件的存储类型,从而确定如何存储该文件(S204)。例如,如果文件是临时的,代理106可以把文件存储在内存210里。如果文件是被认证的,代理106可以把文件存储在内存210和/或磁盘212里。
代理106将文件传送给订阅者(S205)。如果文件已经被发布了(如广播),代理106识别订阅者并放置一份该文件在每个订阅者的客户队列中(例如,第一和第二客户队列214a-b)。如果文件被投递,代理106将该文件放在投递请求中指定的客户队列中(例如,第一或第二客户队列214a-b)。如果该文件没有订阅者,代理106会向发布者202返回一个回执,然后丢弃该文件。然而,如果该文件存在死信订阅的话,代理106就会将该文件存放在包含该死信订阅的队列里(例如,第一和/或第二客户队列214a-b)。文件保留在代理106的队列里(例如,第一和/或第二客户队列214a-b)直到被订阅客户取走。如果超过了该文件的生存时间,代理106就会丢弃该文件。文件的生存时间是可以预先设定的,例如,由用户设定。如果文件是被认证的,代理106返回一回执给分配器104,表明成功地接收和存储了该文件(S206)。分配器204将连接208返回到连接池206。集成服务器102将控制返回到执行下一步骤的发布服务202(S207)。
可以配置可发布文件类型与集成服务器102,使得当文件被发布时集成服务器102不用验证该文件,这是可能的。同样,如果当集成服务器102发布文件时发生一个瞬时错误,审计子系统记录该文件并指定其为“失败”状态。瞬时错误是一种产生于可以快速解决的情况的错误,例如,关于网络发布的资源的不可用或到数据库的连接失败。监视器可以用来寻找和重新提交带有“失败”状态的文件。
图3说明了当代理不可用时,集成服务器是怎样发布文件的。简单来说,集成服务器102不停地监视其与代理106的连接208,如果集成服务器102确定其配套的代理106不可用,就改变发布路径。如果没有连接到代理106,集成服务器106就把认证文件传送到一个外部文件存储器302中。这些文件可以一直存放在外部文件存储器302中,直到与代理106的连接208重新建立。
集成服务器102上的发布服务202发送文件到分配器204(或者当事件发生在适配器监测的资源上时,适配器通知单发布文件)(S301)。在集成服务器102把文件发送到分配器204前,先根据其可发布文件类型验证该文件。如果该文件是无效的,服务202返回一个指示验证错误的异常信号。分配器204侦测到代理106不可用。于是,该文件被储存。例如,如果文件是被认证的,分配器204把文件传送到外部文件存储器302(例如,磁盘上)。如果文件是临时的,分配器204丢弃该文件且发布服务202发出异常信号。集成服务器102执行发布服务里的下一步。
当集成服务器102与代理106的连接重新建立的时候,集成服务器102从连接池206中获得一个单独的连接208(S303)。集成服务器102自动地把文件从外部文件存储器302发送到代理106(S304)。为了更快地清空外部文件存储器302,集成服务器102可以成批地发送文件而不是一次一件。易知,集成服务器102可使用单独的连接208去清空外部文件存储器302,例如,以维持发布顺序。
代理106检测文件的存储类型,确认其是被认证的,并把该文件存储在内存210里和磁盘212上(S305)。代理106把文件传送给订阅者(S306)。如果文件是已发布的(例如,广播),代理106识别出订阅者,并放置一份文件在每个订阅者的客户队列中(例如,第一和第二客户队列214a-b)。如果文件被投递,代理106把该文件放在投递请求中指定的客户的队列中(例如,第一或第二客户队列214a-b)。如果该文件没有订阅者,代理106将返回一个回执给发布者202,然后丢弃该文件。然而,如果文件存在死信订阅,代理106将把文件存放在包含死信订阅的队列中(例如,第一和/或第二客户队列214a-b)。文件将保留在代理106的队列里(例如,第一和/或第二客户队列214a-b),直到被订阅客户取走。如果超过了文件的生存时间,代理106就丢弃该文件。文件的生存时间是可以预设的,例如,由用户预设。如果文件是被认证的,代理106返回回执给分配器204,指示该文件的成功接收和存储(S206)。分配器204把连接208返回到连接池206。代理106返回回执给集成服务器102,指示被认证的文件的成功接收和存储(S307)。集成服务器102从外部文件存储器302上删除该文件。
如果希望当代理106不可用时,不用把已发布的文件放在外部文件存储器302中,可以配置集成服务器102使其发出异常信号来代替。与代理106的连接重新建立之后,集成服务器102可以在外部存储器302被清空前,把所有新发布的文件(例如:认证的和临时的)发送到外部文件存储器302,这样使得集成服务器102可以保持发布顺序。在集成服务器102清空外部文件存储器302后,集成服务器102可直接向代理106重新开始发布文件。
如果集成服务器102设定了一个从外部文件存储器302向代理106传送文件的预定尝试次数(如3,4,5等),并且全部尝试都失败了,审计子系统就记录该文件并指定其为“过多尝试”的状态。如果当集成服务器102发布文件时出现一个瞬时错误,审计子系统将记录该文件并指定其为“失败”状态。配置可发布文件类型与集成服务器102,使得当文件被发布时集成服务器不用验证该文件,这种情况是可能的。监测器被用来寻找以及重新提交带有“过多尝试”或“失败”状态的文件。
图4展示了当请求/回应是同步时,集成服务器发布文件到代理并等待回应。在发布和等待状态下,一服务发布文件(例如:请求),然后等待回应文件。有时这种情况被称为请求/回应模式。请求/回应可能是同步的或者是异步的。在同步请求/回应模式里,当发布流程服务等待回应时其将停止执行。当该服务从指定的客户收到回应文件,就重新开始执行。在异步请求/回应模式里,发布流程服务在发布请求文件后继续执行。也就是说,在执行流程服务中的下一步骤前,发布服务不会等待回应。发布流程服务调用独立的服务去检索回应文件。
发布服务202发送文件(例如,请求)到分配器204(S401)。集成服务器102将一唯一的标识符填入文件封套上的标记域内,所述标识符用来使回应文件与这个请求相匹配。发布服务202进入等待状态。直到发布服务202从订阅者那里收到回应或者超过了等待时间,该服务202才重新开始执行。集成服务器102发布文件后马上开始监看等待时间。在集成服务器102发送文件到分配器204前,先根据其可发布文件类型验证该文件。如果文件是无效的,服务202返回指示验证错误的异常信号。然后服务202解除锁定,但会带有异常信号。
分配器204从连接池206中获得一连接(S402)。连接池206是预存的一组连接208,集成服务器使用连接208把文件发布到代理106。为了把请求文件发布到代理106,集成服务器102使用该请求/回应客户的连接208。如上所述,如果代理106不可用,分配器204可以将文件传送到外部文件存储器302中。分配器204发送该文件到代理106(S403)。
代理106检查该文件的存储类型以确定怎样存储文件(S404)。例如,如果文件是临时的,代理106将该文件存储在内存210中。如果文件是被认证的,代理106把该文件存储在内存210内和磁盘212上。代理106把文件传送给订阅者(S405)。如果文件已发布(例如,广播),代理106识别订阅者并放置一份文件在每个订阅者的客户队列中(例如,第一和第二两客户队列214a-b)。如果文件被投递,代理106放置文件在投递请求中指定的客户的队列中(第一或第二客户队列214a-b)。如果该文件没有订阅者,代理106将向发布者202返回回执,然后丢弃该文件。然而,如果文件存在死信订阅,代理106把文件存放在包含死信订阅的队列里(例如,第一和/或第二客户队列214a-b)。文件一直存放在代理106的队列里(例如,第一和/或第二客户队列214a-b),直到被订阅客户取走。如果超过了文件的生存时间,代理106就丢弃该文件。用户文件的生存时间可以预先设定,例如,由用户设定。如果文件是被认证的,代理106将返回回执给分配器204,指示该文件的成功接收和存储(S406)。分配器204返回连接208到连接池206。
订阅者检索和处理该文件(S407)。订阅者使用一个服务(未显示)来编写和发布回应文件。该服务自动将与请求文件封套标记域中相同的值填入回应文件封套的标记域中。该服务自动指定请求客户作为回应文件的接收者。一个或多个订阅者向代理106发送回应文件(S408)。代理106把回应文件存储在内存210内。代理106把该回应文件放在发起该请求的集成服务器102的请求/回应客户队列402中。
发起请求的集成服务器102从连接池206中获得请求/回应客户并从代理106中检索回应文件(S409)。集成服务器102使用回应文件的标记值与带有原始请求的回应相匹配(S410)。集成服务器102把回应文件放在等待服务404的通道(pipeline)中(S411)。等待服务重新开始执行。
如果请求服务为回应文件指定了一个可发布文件类型,该回应文件的类型就要与该指定的类型相符。否则,回应文件可能成为任何可发布文件类型之一。容易知道,一个单一的请求可以收到很多回应。发起请求的集成服务器102可以仅使用它从代理106中检索到的第一个回应文件。集成服务器102也可以丢弃所有的其他回应。“第一”可以是任意定义的。代理106处理收到的回应的顺序是不一定的。
所有的回应文件都被视为临时文件。临时文件可能被存储在内存210中,而如果回应文件所在的资源关闭或者如果在回应文件的传输过程中连接208丢失,该临时文件可能会丢失。
如果在服务收到回应前,超过了等待时间,集成服务器102可能结束该请求,而该服务则可能返回一个表示请求超时的空文件。集成服务器102执行流程服务中的下一步骤。如果在流程服务重新开始执行后回应文件到达,集成服务器102将拒绝该文件并创建一个日志记录信息,该日志记录信息说明该文件因为没有线程等待该文件而被拒绝。配置可发布文件类型与集成服务器102使得文件被发布时,集成服务器102不必验证文件。
当集成服务器连接到代理时,订阅者一边的文件所跟随的路径包括,例如,从代理中检索文件,把文件存储在集成服务器上,以及处理该文件。文件的订阅路径依赖于该文件是被发布给所有的订阅者(例如广播)还是直接被投递到集成服务器。
图5展示了集成服务器订阅已发布的文件的路径。当文件被发布或广播,代理放置一份文件在每个订阅触发器的客户队列中。每个订阅触发器将会检索和处理该文件。
集成服务器102上的分配器204使用服务器线程从代理106上的触发器客户队列214a中请求文件(S501)。不难发现集成服务器102上的每个触发器在代理106上都有相应的客户队列。该线程为触发器检索了一批文件(S502)。分配器204把这些文件放置在触发器文件存储器502的触发器队列214a中(S503)。触发器文件存储器502可以存放在内存210中。然后分配器204释放用于检索文件的服务器线程。
分配器204在服务器线程池(图未示)中获得一个线程,从触发器队列214a中调出一份文件,并根据触发器的条件对文件进行评估(S504)。如果触发器配置为仅一次处理,集成服务器102会首先确定该文件是否是已经被触发器处理过的文件的副本。在这种情况下,只有当文件是新的时,集成服务器102才会继续对其进行处理。
如果文件符合触发条件,分配器204执行与该条件相关的触发服务502a(S504)。如果文件不符合触发条件,集成服务器102会丢弃该文件,返回一回执给代理106并把服务器线程返回到服务器线程池。集成服务器102也可能会生成一个说明该文件不符合触发条件的日志记录信息。
触发服务执行直到完成(例如,直到成功或者出错)(S506)。如果触发服务502a成功执行,集成服务器102返回一回执给代理106(例如,如果这是一个认证文件)。然后,集成服务器102从触发队列214a中删除该文件并将服务器线程返回到服务器线程池。如果服务异常发生,触发服务502a错误地结束且集成服务器102拒绝了该文件。如果文件是被认证的,集成服务器102返回一个回执给代理106。集成服务器102从触发队列214a中删除该文件,将服务器线程返回到线程池并发送一个表明发生错误的错误文件。如果一个瞬时错误发生在触发服务执行期间而该服务发现了该错误,则将其打包并作为异常重新发送,然后集成服务器102等待重试间隔的时长(可以预设定和/或用户指定)并利用原始文件作为输入重新执行该服务。如果集成服务器102达到了重试的最大次数(同样可以预设定和/或用户指定)而触发服务502a仍然因为瞬时错误而失败,集成服务器102就把最后的失败作为服务错误。
当代理106接收到回执以后,会从认证存储器212上删除该文件。集成服务器可能只返回认证文件的回执。如果集成服务器在回执认证文件之前关闭了或者与代理106进行了再连接,当服务器重启或者连接恢复时,集成服务器102可从代理106中恢复该文件。因此,文件可以被重新投递。如果触发服务发生错误时生成了审计数据并在审计日志里包含了输入路径的副本,监控器稍后将被用来重新调用该触发服务。
一个文件可能同时满足一个触发器的几个条件。然而,集成服务器102只会执行与最先满足的条件相关的服务。触发器的处理模式决定了集成服务器102串行还是并行地处理触发队列中的文件。在串行处理过程中,集成服务器102按文件在触发队列中的顺序一次一个地处理文件。在并行处理过程中,集成服务器一次处理尽可能多的文件,而不必按文件在队列中的顺序处理。易知,在并行处理过程中,集成服务器102会依据最大可用线程数来处理大批的文件,而在特定的实施例里面所述最大可用线程数可以由用户配置。
如果一个瞬时错误发生在文件检索或存储过程中,审计子系统会记录该文件并指定其为“失败”状态。瞬时错误是这样一种错误,该错误源于一种稍后可以得到解决的状况,例如,关于网络发布的资源的无效或者与数据库连接失败。监控器可以用来查找或者重新递交带有“错误”状态的文件。同样,如果发生重试失败,触发器可以用于暂停并在稍后重试。当集成服务器102达到了最大重试次数而触发服务因为异常仍然失败时,发生重试失败。
图6展示了集成服务器订阅投递给默认客户的文件的路径。发布服务可以通过指定文件的目的地投递文件。例如,发布服务可以指定接收文件的代理客户。当代理收到一个被投递的文件,它只在指定客户的队列中放置一份文件。典型地,文件被投递到默认客户。默认客户是当集成服务器第一次配置它与代理的连接而创造的代理客户。易知,如果发布服务指定一个独立的触发器作为文件的目的地(例如发布服务指定一个触发器客户ID作为目的地ID),文件的订阅路径与发布文件的路径一样。
集成服务器102的分配器204从代理106上的默认客户队列请求文件(S601)。容易知道,默认客户可以是为集成服务器102创建的代理客户。只要发布者把文件投递到集成服务器的客户ID,代理106就将文件放置在默认客户的代理队列602中。线程成批地检索投递给默认客户的文件(S602)。线程一次检索的文件的数量由一些因素决定,例如,默认文件存储器的容量和存储水平以及代理106上默认客户的可用文件数量。
分配器204把该文件(例如在内存中)放置在默认文件存储器604中(S603)。分配器204识别该文件的订阅者并给每一个订阅者的触发队列214a-b(S604)传送一份该文件。在投递文件的情况下,集成服务器102把文件存储在触发队列214中。触发队列214位于可以存储在磁盘上的触发器文件存储器502内。集成服务器102从默认文件存储器604中删除该文件,并且如果该文件是认证文件,则返回一个回执给代理106(S605)。代理106从默认客户队列602中删除该文件。
分配器204在服务器线程池中获得一个线程,从触发队列214a-b中调出文件并以触发器里的条件评估该文件(S606)。如果触发器被配置为仅一次处理集成服务器102就要先确定该文件是否是触发器处理过的文件。只有当该文件是新的,集成服务器才会继续处理该文件。
如果文件符合触发器的条件,集成服务器102执行与该条件相关的触发服务502a、504b。如果文件不符合触发器的条件,集成服务器102发送一个回执给触发队列214a-b,丢弃该文件(例如把其从触发队列214a-b中删除)并把服务器线程返回到服务器线程池。集成服务器102同样生成一个说明该文件不符合触发条件的日志记录信息。
触发服务执行(例如直到成功或出错)(S608)。如果触发服务502a、504b成功执行,集成服务器102返回一个回执给触发队列214a-b(例如,如果这是一个认证文件),从触发队列214a-b中删除该文件,并返回服务器线程给线程池。如果服务异常发生,触发服务502a、504b错误终止而集成服务器102拒绝了该文件,把所述文件从触发队列214a-b中删除,返回服务器线程给线程池,并发送错误文件表明错误发生。如果文件是被认证的,集成服务器102会返回一个回执给触发队列214a-b。触发队列214a-b把该认证文件从存储器中删除。如果一个瞬时错误在触发服务执行期间发生而该服务发现该错误,将其打包并作为异常重新发送,其后集成服务器102等待重试间隔的时长并使用原始文件作为输入重新执行该服务。如果集成服务器102达到重试的最大次数而触发服务由于瞬时错误仍然失败,集成服务器102就把最后一次失败视作服务错误。
集成服务器102可以把被投递的文件保存在磁盘上的触发器文件存储器502中,也可以把发布的文件保存在内存里的触发器文件存储器502中。如果集成服务器102在处理保存在磁盘上的触发器文件存储器的认证文件之前关闭,当集成服务器重启时,会从触发器文件存储器502的恢复该文件。临时文件存储在内存中,因此不可能在重启时得到修复。
如果服务在发生错误时生成了审计数据并在审计日志里包含了该输入传递途径的副本,监控器稍后可被用来再调用该触发服务。如上所述,一个文件可能会同时满足触发器不止一个条件。然而,集成服务器102只执行最先满足的条件的相关服务。
触发器的处理模式可以决定集成服务器102是以串行还是并行的方式处理触发队列里的文件。在串行处理过程中,集成服务器102按文件在触发队列中的顺序对文件逐一进行处理。在并行处理过程中,集成服务器102一次处理尽可能多的文件,而不一定按文件在队列里的顺序处理。
如果一个瞬时错误发生在文件恢复或者存储的时候,审计子系统记录该文件并指定其状态为“失败”。监控器可以用作查找和重新提交“失败”状态的文件。如果发生重试失败,触发器可以设定暂停并在稍后再重试。集成服务器达到最大重试次数而触发服务由于异常仍然失败时,重试失败发生。
图7展示了本地发布的文件的发布和订阅路径。本地发布是指在集成服务器内发布文件的过程。在这种情况下,只有位于同一集成服务器的订阅者可以接收和处理该文件。在本地发布时,文件保留在集成服务器内部。此时没有代理参与。当发布该文件的服务指定该文件应当本地发布或者集成服务器没有与代理相连接时,本地发布发生。
集成服务器102的发布服务202发送文件给分配器204(S701)。在集成服务器102发送文件给分配器204之前,先根据其可发布文件类型验证该文件。如果文件是无效的,服务返回一个指示验证错误的异常信号。分配器204确定哪个触发器定阅了该文件,并在每个订阅者的触发队列214中放置一份该文件的副本,同时把本地发布的文件保存在触发器文件存储器502中(如位于磁盘上的触发器文件存储器);或者,如果没有人订阅该文件,则分配器204丢弃该文件(S702)。
分配器204从服务器线程池的获得线程,从触发队列214中调出文件,并根据触发器的条件评估该文件(S703)。如果触发器配置为仅一次处理,集成服务器102首先确定文件是不是触发器已经处理过的文件的副本。集成服务器102只有在文件是新文件的情况下继续对其进行处理。如果文件符合触发条件,分配器204执行与该条件相关的触发服务502/504/506。如果文件不符合触发条件,集成服务器发102发送回执给触发队列214,丢弃文件(如将其从触发队列214中删除),并把服务器线程返回到服务器线程池。
触发服务执行完毕(例如:直到成功或出错)(S705)。如果触发服务502/504/506成功执行,集成服务器102发送回执给触发队列214(例如:如果这是一个认证文件),把文件从触发队列214删除,并将服务器线程返回到线程池。如果一个服务异常发生,触发服务502/504/506错误中止而集成服务器102拒绝文件,把文件从触发队列214去除并将服务器线程返回到线程池。如果文件是被认证的,集成服务器102发送一个回执给触发队列214。如果瞬时错误发生在触发服务执行期间而且该服务发现了该错误,将其打包并作为异常重新发送,然后集成服务器102等待重试间隔时长并使用原始文件作为输入重新执行该服务。如果集成服务器102达到了最大重试次数而触发服务502/504/506仍然由于瞬时错误而失败,集成服务器102就把最后一次失败当作服务错误。
配置可发布文件类型和集成服务器102使得当文件发布的时候集成服务器102不需要验证这些文件,这种情况是可能的。集成服务器102可以把本地发布的文件存储在位于磁盘上的触发器文件存储器502里。如果集成服务器102在处理本地发布的认证文件之前关闭,集成服务器102可以在其重启时从触发器文件存储器502内恢复该文件。集成服务器重启的时候不能恢复临时文件。如果服务在发生错误时产生审计数据并在审计日志里包括输入传递路径的副本,稍后监控器可用来再次调用该触发服务。
一个文件有可能同时满足几个触发器条件。然而,集成服务器102只会执行与最先符合的条件相关的服务。触发器的处理模式决定集成服务器102以串行方式还是并行方式处理触发队列中的文件。在串行处理过程中,集成服务器102按照文件中触发队列中的顺序对文件进行逐个处理。在并行处理过程中,集成服务器102一次处理尽可能多的文件,而不需要按照文件在队列中的顺序。如果重试失败发生,也可以配置触发器暂停并在稍后重试。当集成服务器102达到最大重试次数的尝试时,而触发服务因为异常仍然失败,重试失败发生。
现在说一下建造一个发布与订阅解决方案的总体步骤。简单来说,在发布端,用户为将要发布的文件创建可发布文件类型和处理其收到的发送端发布的文件的服务。在订阅端,用户创建发布文件的服务以及触发器,所述触发器将收到的文件与处理这些文件的服务相连接。
更为详细的是,创建一个集成解决方案的第一步涉及确定问题并确定如何利用发布和订阅模型去解决该问题。当设计解决方案的时候,确定需要被发布/订阅的文件是很有用的。创建可发布文件类型的时候这个信息很有用。类似的,它也对确定文件应该怎么被发布很有用。这个信息在创建发布文件的服务时很有用。最后,对于确定如何处理该文件也很有用。这个信息在创建处理该文件的服务时也是很有用的。
第二步,确定产品的结构。在一些情况下,我们希望能用开发环境去反映产品环境。要考虑的问题包括是否所有文件的发布和订阅都在一个单独的集成服务器上执行或者使用几个集成服务器执行;如果使用几个集成服务器,是否配置了组群;以及在产品环境中是否会使用代理。第三步,创建可发布文件类型。也就是说,在将要发布的文件确定之后,在发布端创建可发布类型。
第四步,使得可发布文件类型可用。为了创建处理文件的服务和订阅文件的触发器,订阅端一般需要定义将要发布的文件的可发布文件类型。当开发环境是一个单独的集成服务器的时候,发布端以及订阅端都在这个集成服务器上开发。因此,一般来说,不需要有使得可发布文件类型对其他开发者可用的动作。在发布端的可发布文件类型创建以后,该可发布文件类型立即对订阅端可用。然而,当开发环境包括带有代理的数个集成服务器时,发布端和订阅端分别在与代理相连的独立的集成服务器上开发。因此,当可发布文件类型创建以后,相应的代理文件类型在代理上自动生成。通过从代理文件类型创建可发布文件类型,使得可发布文件类型对其他开发者来说也是可用的。从代理文件类型创建可发布文件类型是可能的。同样,通过使用程序包复制把可发布文件类型分发给其他集成服务器的开发者也是可能的。在这种情况下,当其他开发者接收到程序包,他们会安装该程序包,然后通过从代理调出文件类型使文件类型同步。
第五步,在发布端,把文件发布到代理或者本地发布在同一个集成服务器上的服务被创建。第六步,在订阅端,处理收到的文件的服务被创建。当创建一个处理文件的服务时,输入标记里可能包含被发布文件的可发布文件类型的文件对比。这样,就可以利用可发布文件类型里定义的标记域来对比文件里的数据。
第七步,定义触发器。在订阅端,触发器被创建,以将一个或多个可发布文件类型与处理被发布的文件的服务相关联。为了使可发布文件类型与该服务相关联,触发条件被创建,所述触发条件识别订阅的可发行布文件类型和当该类型文件到达时要调用的服务。可以通过增加过滤器进一步细化该条件,所述过滤器为发布文件的内容指定标准。触发器被保存后,集成服务器利用该触发器里的条件对可发布文件类型的订阅进行定义。下文将对触发器的设计和结构进行详细说明。
第八步,可发布文件类型被同步。当集成解决方案里包括代理时,每个可发布文件类型在代理上都有一相应的代理文件类型。图8显示了一发布订阅模型集成解决方案的两端,所述两端具有与相同的代理文件类型相关联的可发布文件类型。在发布订阅综合解决方案里,发布端和订阅端使用相同的可发布的文件类型802。当把文件804发布到代理106时,发布端使用可发布文件类型802去识别被发布的文件类型。订阅端参考触发器808里的可发布文件类型802指出被订阅的文件的类型。为了集成解决方案能正确工作,发布端和订阅端的可发布文件类型802应该参考同一代理文件类型806。
以下描述了如何生成一个可发布文件类型,该可发布文件类型对应基于开发环境的相同的代理文件类型。若开发环境包含一个集成服务器,当集成解决方案用于产品时,发布端和订阅端可在通过一个代理连接的不同的集成服务器上。因此,有必要同步创建与可发布文件类型相关联的代理文件类型。相应的,在发布端同步化过程中,可发布文件类型被推到代理从而在代理上创建代理文件类型。程序包复制可用于建立和分发包含可发布文件类型的程序包。在订阅端,安装由发布端创建的包含可发布文件类型的程序包。在同步化过程中,文件类型从代理中调出以更新可发布文件类型。
在开发环境包括有代理的数个集成服务器的情况下,由于开发期间使用了代理,发布端和订阅端上的可发布文件类型已经与同一代理文件类型相对应。尽管如此,为了确保可发布文件类型与代理文件类型同步,可以使用全部文件类型的简单同步化。
现在提供关于触发器的更详细描述。触发器创建对可发布文件类型的订阅并指定如何处理那些可发布文件类型。当触发器被创建时,一个或者多个条件也被创建出来。一个条件使一种或多种可发布文件类型与一个单独的服务相关联。可发布文件类型充当触发器的订阅块。服务是处理块。当触发器接收到其订阅的文件时,集成服务器就通过调用条件中指定的服务来处理该文件。
创建触发器是这样一个过程,该过程包括以下几个基本阶段。在集成服务器上创建一个新的触发器。这阶段里,该新的触发器创建在执行开发和测试的集成服务器上。一个或多个触发条件被创建。这一阶段里,将可发布文件类型与服务相关联,创建应用于收到的文件的过滤器,并选择联合类型。触发属性被设置。在这一阶段里,设定配置触发器的运行环境的参数,如触发队列容量、文件处理模式、触发器服务重试限度以及仅一次处理。在触发器上可进行测试和调试。
处理由触发器接收的文件的服务叫触发服务。一个条件通常指定一个单一的触发服务。在触发器被激活之前,该触发服务必须已经存在于相同的集成服务器上。另外,触发服务的输入标记需要有一可发布文件类型的文件对比。该文件对比的名称就是可发布文件类型的全限定名。可发布文件类型的全限定名可以遵照一定的格式,如:文件夹.子文件夹:可发布文件类型名称。
触发器被保存后,集成服务器可评估该触发器,特别是触发里的条件,以确定该触发器是有效的。如果集成服务器确定触发器或者触发器里的条件是无效的,一错误信息将被显示给用户,同时该触发器被禁用。在执行过程中,当以下各个情况都符合时,触发器可被认为是有效的:触发器至少包含一个条件;触发器的每个条件指定一唯一的名称;触发器的每个条件指定一服务;触发器的每个条件指定一个或多个可发布文件类型;如果触发器里多个条件指定同一可发布文件类型,应用于可发布文件类型的过滤器在每个条件里是相同的;应用于可发布文件类型的过滤器的句法是正确的;以及该触发器包含不超过一个联合条件。
一般而言,一触发器只能订阅可发布文件类型。多个触发器(和一触发器内的多个条件)能对照同一可发布文件类型。运行时,对于每个触发器,集成服务器调用第一个条件指定的服务,该条件符合可发布文件类型标准。
图9为现有的消息传输层900的结构框图,所述消息传输层在上述系统的部件之间提供通信,并与各部件通信。所述消息传输层900可作为单独实现分别位于集成服务器和代理上,也可以位于任何供应者上。在消息传输层900设有作为自定义实现的应用服务902。消息供应者(例如:一个以专用或者JMS模式运行的代理,另一个JMS供应者)可随意地与访问该供应者的客户区分开来。在这种情况下,客户可以是嵌有供应者客户数据库的集成服务器、自定义程序或者应用程序。这些客户数据库可以包括消息Java压缩文件包(JAR file),该Java压缩文件包包含在消息传输应用程序接口(API)层(例如,代理应用程序接口和/或JMS应用程序接口)。消息传输层的高层(例如,JMS适配器和触发层,通过应用代码)可存在于集成服务器上。
触发层904激活上述代理触发服务,该代理触发服务与上述集成服务器代理触发器子系统和设备906通信。这些层能够访问专用消息传输API层908。代理API可以通过Java压缩文件包分配和/或执行。因此,消息传输层900的右侧提供了一套丰富的可通过专用消息传输层与集成服务器910通信的功能,以提供一应用集成方案。
如上说述,为了在开放、基于标准的消息传输协议上提供互通和/或者通信,可通过适配器的使用实现适当的消息传输协议(如,JMS消息传输)。于是,在消息传输层900的左侧,提供了一JMS适配器层912以与JMS API层914连接,该连接可利用Java开发工具包(JDK)提供的标准JMS接口实现。这样,消息传输层900的左侧就提供了可互通的和/或开放式消息传输功能,该功能可通过JMS相关层与集成服务器910通信,从而提供一应用集成方案。
从图9容易看出,当前的消息传输层900的左侧并不包括触发器子系统。因此,建立在JMS适配器上的应用程序缺乏代理触发器子系统的扩展能力。照这样,使用当前消息传输层900的用户被迫在具有互通性和基于标准的消息传输和处理与更强大的专用消息传输和处理中进行选择。
本发明实施例中解决这个问题的方案涉及将JMS作为专用消息传输协议的对等体嵌入集成服务器触发子系统,使得全部或者基本上全部现有能力可以由JMS实现。
因此,图10为本发明一实施例的消息传输层1000的结构框图。和图9中的消息传输层一样,本实施例中的消息传输层1000可以作为单独实施分别位于集成服务器和代理上(图10所示的不是这种情况),也可在任意供应者上,例如,一支持JMS消息传输的供应者。然而,通过使用本实施例的消息传输层1000,JMS消息传输可以在不使用集成服务器的特定适配器的情况下运作。此外,在本发明的实施例中,这种消息传输层1000可以避免对JMS触发器自身的任何改变(例如,规定格式的标准JMS消息可以被使用)和/或在一定情况下减少应用服务层次上的自定义程序和/或者实现的需要。
从图10可看出,消息传输层1000的左侧基本上映射了其右侧。特别是,一个JMS触发层1004作为代理触发层904的对等层,以及一JMS子系统1006(该子系统有利于替换JMS适配器912)是代理触发器子系统906的对等层。相同的API层914和专用代理消息传输API层908仍然提供。然而,在消息传输层1000里包含有一触发器子系统1002,该触发器子系统1002提供共用的触发器设备。在单独的触发层904、1004上提供一作为增值层的触发器子系统1002,从而使得平行子系统可以运行。
在特定例子里,通过采取以下一个或多个特定措施实现触发子系统1002。第一,集成服务器触发器命名空间实体被扩展和改写,以包括针对JMS消息传输的属性和设置。触发器命名空间是一个命名对象,该对象实现关于等待消息时长和收到消息时如何对其进行处理的配置。它是可以作为文件夹的命名层次组织起来的。例如,以下结构:bussapp.processpo:handlineincomingprocessingorder代表了当收到排序文件时,业务应用程序该怎么去处理该排序文件。命名空间可组织为树形,且配置可在节点上进行。
第二,集成服务器触发器的管理能力被扩展和改写以包括针对JMS的选项(例如,一个可选择的节流方案)。这种管理能力对于控制信息进入系统的流量很有帮助(例如减少系统过载的可能性)。管理可以全局执行和/或在触发层上执行。示例性功能包括控制/停止触发器接受和/或处理。
第三,集成服务器触发集群模型被扩展和改编以用于JMS。可以看出集群,例如负载平衡集群,可用于增加可扩展性和可生存性。在特定实施例里,同一触发器可用于一个或多个集成服务器上。
第四,集成服务器触发器联合机制被扩展和改变以用JMS。在联合操作里,如果流程要求全部文件同时处理,一个触发器就会等待多个文件。第五,集成服务器触发器排序服务执行机制被扩展和改写以用于JMS。如果包括多个文件,排序服务执行保证能按顺序处理这些文件。第六,集成交易处理的实现被用于JMS消息的触发器子系统。交易处理包括把处理顺序与交易绑定。然后该处理顺序可以作为一整个交易提交,或者如果交易里任何操作失败了,交易改变可以重新运行。
同样,在本发明的实施例中,在代理自身作为JMS供应者使用的情况下,会提供一定的自定义扩展。例如,可以实现单级(如,命名对象JNDI)配置,多服务器故障转移(如,共享客户模式),和/或激活大信息分流处理。确实,本发明提供的配置性能简化了自定义编程和执行要求。例如,本发明实施例提供了一相当于要求实际编程的基于菜单配置的工具。
消息处理的标准流程包括预处理,处理和后处理。预处理包括消息检索和评估,所述预处理可包括,例如集群支持,复本检测,交易初始化等等。处理包括服务分配,可包括例如本地过滤处理、应用程序的并行、联合和排序服务执行评估等等。后处理包括信息认证,例如包括错误和重试处理,交易完成等等。
这些配置技术具有一些优点。例如,因为消息处理通过触发器寻址,建立在集成服务器内的能力可以被平衡。因为本发明实施例中的触发器的结构是唯一的,所以基于JMS的投递机制也是唯一的。此外,尽管传统的代理通过低互通性的专用协议提供了丰富的功能集,而JMS消息传输提供了互通性但减少了功能,本发明提供了基于标准的消息传输协议的互通性和强大的功能集。因此,利用这种自定义消息传输层和/或适配器提供消息传输层的扩展,降低了(有时消除了)消息传输层、适配器和/或应用程序的自定义开发的需要。这样,使用相同或者更大的功能代替基于配置的方式,有可能避免在非标准的方式下进行的重复重新编码。
这样,总体的优点包括:充分增强的,完全互通的基于标准的(如,基于JMS)消息传输;使用附加于或者代替专用代理的可替换(如JMS)消息传输供应者的能力以及同时连接多个消息传输供应者的能力(如,一个代理和/或数个JMS供应者)。本发明实施例中的触发器子系统提供的特殊优点可包括在一个或多个JMS目的单元(如,队列或者主题)的监听器公布的配置中、服务器负载控制的并行配置(如,每个触发器和/或全局的线程都是可用的)、全局和每个触发器运行管理(如,监控,暂停和继续,容量管理等)、一次性和仅一次性处理(如,认证处理、复制检测、错误重试等)、自动瞬时错误处理和恢复(如,后台应用程序暂时不可用)、消息处理的集群支持(如,提供可量测性、可用性和故障转移功能)、大文件的基于分流的消息传输(如,以减少存储器过载)、在业务流程模型执行中有用的基于联合(如或、与、异或)的条件性消息处理、用于消息排序的排序服务执行、本地集成和辅助放大器交易支持、为消息列队的客户端(如,以支持JMS供应者的不可用),本地过滤器(如,超过有限的JMS选择器容量)等。
可以看出这里用到的词:系统、子系统、服务、程序逻辑电路等等均可以由软件、硬件、固件等等的任何合适的结合来执行。
结合目前被认为是最实际和最佳的实施方式对本发明进行了描述,但必须认识到本发明并不是仅限于公开的实施例,相反的,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。。
Claims (25)
1.一种适用于应用集成系统的触发器子系统,包括:
至少一个专用触发器子系统,所述专用触发器子系统嵌入在所述触发器子系统中;
至少一个基于标准的触发器子系统,所述基于标准的触发器子系统基本全部地嵌入在触发器子系统中;及
所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统共用的触发器设备,
其中,每个所述至少一个专用触发器子系统和每个所述至少一个基于标准的触发器子系统为平行子系统;
其中,每个所述专用触发器子系统和每个所述基于标准的触发器子系统用于访问对应的触发层;
其中,每个所述触发层用于提供具有与各自触发层相关的形式的触发器;及
其中,所述触发器包括引起一个流程在所述应用集成系统内或通过其部件执行的指令。
2.如权利要求1所述的触发器子系统,其特征在于:所述触发器使一个发布订阅模型应用于所述集成应用服务器中。
3.如权利要求2所述的触发器子系统,其特征在于:所述触发器包括用于建立可发布文件类型的订阅和指定一个或多个服务处理通过所述订阅接收到的文件的指令。
4.如权利要求1所述的触发器子系统,其特征在于:所述触发器子系统使基于标准的消息传输免受任何用于所述应用集成服务器的适配器的影响。
5 如权利要求1所述的触发器子系统,其特征在于,还包括:一个作为一个所述基于标准的触发器子系统和所述至少一个专用触发器子系统的对等体基本全部嵌入所述触发器子系统中的Java消息服务子系统。
6.如权利要求5所述的触发器子系统,其特征在于:所述Java消息服务子系统用于提供Java消息服务触发器。
7.如权利要求1所述的触发器子系统,其特征在于:所述至少一个标准化基于标准的触发器子系统的所述触发器保留其原始格式。
8.如权利要求1所述的触发器子系统,其特征在于:所述触发器子系统被布置以提供所述至少一个基于标准的触发器子系统的配置,所述基于标准的触发器子系统不受应用服务级别上的实现变化的影响。
9.一种消息传输层,用于集成服务器或作为集成服务器系统的部件的集成服务器,所述消息传输层包括:
一触发器子系统,包括:
至少一个嵌入在其内部的专用触发器子系统,
至少一个基本完全嵌入在其内部的基于标准的触发器子系统,及
所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统共用的触发器设备;
所述至少一个专用触发器子系统和至少一个基于标准的触发器子系统作为触发器子系统的平行子系统;
复数个平行触发层,所述触发层分别应用于每个所述专用触发器子系统和每个所述基于标准的触发器子系统;及
复数个消息传输应用程序接口层,所述消息传输应用程序接口层应分别用于每个所述专用触发器子系统和每个所述基于标准的触发器子系统;
每一个所述触发层用于提供触发器,所述触发器具有与各自触发层相关的格式;
所述触发器包括引起一个流程在所述应用集成系统内或通过所述应用集成系统或其部件执行的指令。
10.如权利要求9所述的消息传输层,其特征在于:所述触发器使得一个发布订阅模型能应用于所述应用集成系统中。
11.如权利要求10所述的消息传输层,其特征在于:所述触发器包括用于建立可发布文件类型的订阅和指定一个或多个服务处理通过所述订阅接收到的文件的指令。
12.如权利要求9所述的消息传输层,其特征在于:所述触发器子系统使基于标准的消息传输免受任何用于所述集成系统的适配器的影响。
13.如权利要求9所述的消息传输层,其特征在于,还包括一个作为一个所述基于标准的触发器子系统和所述至少一个专用触发器子系统的对等体基本全部嵌入所述消息传输层的Java消息服务子系统。
14.如权利要求13所述的消息传输层,其特征在于:所述Java消息服务子系统用于提供Java消息服务触发器。
15.如权利要求9所述的消息传输层,其特征在于:所述至少一个标准化基于标准的触发层的触发器保留其原始格式。
16.如权利要求9所述的消息传输层,其特征在于:所述触发器子系统被布置以提供所述至少一个基于标准的触发器子系统的配置,所述基于标准的触发器子系统不受应用服务级别上的实现变化的影响。
17.一种配置应用集成系统的方法,包括:
提供一个消息传输层,所述消息传输层用于集成服务器或作为所述应用集成系统的部件的一个集成服务器;
在所述消息传输层里设置一触发器子系统;
在所述触发器子系统内嵌入至少一个专用触发器子系统;
在所述触发器子系统里基本完全嵌入至少一个基于标准的触发器子系统;
配置所述触发器子系统为所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统提供共用的触发器设备;
提供复数个触发层,所述触发层分别提供给每个所述专用触发器子系统和每个所述基于标准的触发器子系统;及
提供复数个消息传输应用程序接口层,所述消息传输应用程序接口层分别提供给每个所述专用触发器子系统和每个所述基于标准的触发器子系统;
所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统在所述触发子系统中为平行子系统,
每个所述触发层用于提供触发器,所述触发器具有与各自触发层相关的格式,
所述触发器包括一个流程在所述应用集成系统内或通过所述应用集成系统或其部件执行的指令。
18.如权利要求17所述的方法,其特征在于,还包括:通过触发器使一个发布订阅模型应用到所述应用集成系统中。
19.如权利要求18所述的方法,其特征在于,还包括:在所述触发器中设置用于建立可发布文件类型的订阅和指定一个或多个服务去处理通过所述订阅接收到的文件的指令。
20.如权利要求17所述的方法,其特征在于,还包括:使所述基于标准的消息传输免受任何用于所述应用集成系统的适配器影响。
21.如权利要求17所述的方法,其特征在于,还包括:在所述触发子系统内基本上完全嵌入一个Java消息服务子系统,所述Java消息服务子系统作为一个所述基于标准的触发器子系统和所述至少一个专用触发器子系统的对等体。
22.如权利要求21所述的方法,其特征在于:所述Java消息服务子系统用于提供Java消息服务触发器。
23.如权利要求17所述的方法,其特征在于,还包括:保留所述至少一个基于标准的触发层的原始格式。
24.如权利要求17所述的方法,其特征在于:布置所述触发器子系统以提供所述至少一个基于标准的触发器子系统的配置,所述配置基于标准的触发器子系统不受应用服务级别上实现变化的影响。
25.一种基于发布订阅模型或其变体的应用集成系统的操作方法,所述方法包括:
提供一个消息传输层,所述消息传输层应用于集成服务器或作为所述应用集成系统的部件的一个集成服务器,所述消息传输层包括:
一触发器子系统,所述触发器子系统包括:至少一个嵌入其中的专用触发器子系统和至少一个基本全部嵌入其中的基于标准的触发器子系统,所述触发子系统用于提供所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统的共用的触发器设备,及
复数个触发层,所述触发层分别提供给每个所述专用触发器子系统和每个所述基于标准的触发器子系统,每个所述触发层用于提供具有与各自触发层相关的格式的触发器;
在所述触发器内设置用于建立可发布文件类型的订阅和指定一个或多个服务去处理通过所述订阅接收到的文件的指令;
根据相应触发器中的所述指令向一个或多个订阅者发布一个或多个文件;及,
根据对应触发器中的所述指令处理每一个所述文件,
其中,在所述触发器子系统中,所述至少一个专用触发器子系统和所述至少一个基于标准的触发器子系统为平行子系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/896,310 | 2007-08-30 | ||
US11/896,310 US8136122B2 (en) | 2007-08-30 | 2007-08-30 | Systems and/or methods for providing feature-rich proprietary and standards-based triggers via a trigger subsystem |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101420391A true CN101420391A (zh) | 2009-04-29 |
Family
ID=38814301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810214999.4A Pending CN101420391A (zh) | 2007-08-30 | 2008-09-01 | 由触发器子系统提供专用及基于标准触发器的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8136122B2 (zh) |
EP (1) | EP2031818B1 (zh) |
CN (1) | CN101420391A (zh) |
AT (1) | ATE463918T1 (zh) |
DE (1) | DE602007005800D1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992741A (zh) * | 2020-07-10 | 2022-01-28 | 华为技术有限公司 | 一种发布数据索引方法及装置 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676580B2 (en) * | 2003-03-27 | 2010-03-09 | Microsoft Corporation | Message delivery with configurable assurances and features between two endpoints |
US8214847B2 (en) * | 2007-11-16 | 2012-07-03 | Microsoft Corporation | Distributed messaging system with configurable assurances |
US8200836B2 (en) * | 2007-11-16 | 2012-06-12 | Microsoft Corporation | Durable exactly once message delivery at scale |
TW201032535A (en) * | 2008-10-14 | 2010-09-01 | Ibm | A method of handling a message |
US8171492B2 (en) | 2009-03-31 | 2012-05-01 | Software Ag | Systems and/or methods for end-to-end business process management, business event management, and/or business activity monitoring |
US8301687B2 (en) * | 2009-03-31 | 2012-10-30 | Software Ag | Systems and/or methods for standards-based messaging |
US8453163B2 (en) * | 2009-06-29 | 2013-05-28 | Software Ag Usa, Inc. | Systems and/or methods for policy-based JMS broker clustering |
US8296411B2 (en) * | 2010-03-01 | 2012-10-23 | International Business Machines Corporation | Programmatically determining an execution mode for a request dispatch utilizing historic metrics |
US9002801B2 (en) * | 2010-03-29 | 2015-04-07 | Software Ag | Systems and/or methods for distributed data archiving amongst a plurality of networked computing devices |
US9225786B1 (en) * | 2010-09-03 | 2015-12-29 | Peter Ebert | Intelligence marketplace system and method |
US9542448B2 (en) | 2010-11-03 | 2017-01-10 | Software Ag | Systems and/or methods for tailoring event processing in accordance with boundary conditions |
US9009683B2 (en) | 2012-03-28 | 2015-04-14 | Software Ag | Systems and/or methods for testing client reactions to simulated disruptions |
US9509529B1 (en) * | 2012-10-16 | 2016-11-29 | Solace Systems, Inc. | Assured messaging system with differentiated real time traffic |
CN103049702A (zh) * | 2013-01-05 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于服务器层的安全加固策略 |
US10354212B2 (en) | 2013-02-07 | 2019-07-16 | Software Ag | Techniques for business process driven service oriented architecture (SOA) governance |
US9973418B2 (en) | 2013-11-12 | 2018-05-15 | Software Ag | Techniques for change propagation across broker territories |
US9729653B2 (en) | 2014-01-23 | 2017-08-08 | Software Ag | Systems and/or methods for automatically tuning a delivery system for transmission of large, volatile data |
US9680919B2 (en) | 2014-08-13 | 2017-06-13 | Software Ag Usa, Inc. | Intelligent messaging grid for big data ingestion and/or associated methods |
US9904899B2 (en) | 2014-08-27 | 2018-02-27 | Software Ag | Systems and/or methods for reactive, distributable, and extensible process execution |
CN105740729A (zh) * | 2016-01-29 | 2016-07-06 | 浪潮电子信息产业股份有限公司 | 一种系统服务程序可信检查的方法 |
US11153215B1 (en) * | 2018-11-19 | 2021-10-19 | Cvs Pharmacy, Inc. | Asynchronous high throughput inbound messages with throttled outbound messages to safeguard enterprise backend systems |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657450B2 (en) | 2000-12-08 | 2010-02-02 | Microsoft Corporation | Reliable, secure and scalable infrastructure for event registration and propagation in a distributed enterprise |
US6915519B2 (en) * | 2001-07-12 | 2005-07-05 | International Business Machines Corporation | Pluggable JMS providers in a J2EE server |
WO2003015000A1 (en) | 2001-08-08 | 2003-02-20 | Trivium Systems Inc. | Workflow engine for automating business processes in scalable multiprocessor computer platforms |
US7287066B2 (en) | 2003-10-31 | 2007-10-23 | Sap Aktiengesellschaft | Publish-subscribe system having a reliability mechanism |
US20060031232A1 (en) * | 2004-04-30 | 2006-02-09 | Jahn Keith E | Management tool programs message distribution |
US7313575B2 (en) * | 2004-06-14 | 2007-12-25 | Hewlett-Packard Development Company, L.P. | Data services handler |
GB0508624D0 (en) | 2005-04-28 | 2005-06-08 | Ibm | Reverse proxy system and method |
-
2007
- 2007-08-30 US US11/896,310 patent/US8136122B2/en active Active
- 2007-09-12 AT AT07017865T patent/ATE463918T1/de not_active IP Right Cessation
- 2007-09-12 EP EP07017865A patent/EP2031818B1/en active Active
- 2007-09-12 DE DE602007005800T patent/DE602007005800D1/de active Active
-
2008
- 2008-09-01 CN CN200810214999.4A patent/CN101420391A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992741A (zh) * | 2020-07-10 | 2022-01-28 | 华为技术有限公司 | 一种发布数据索引方法及装置 |
CN113992741B (zh) * | 2020-07-10 | 2023-06-20 | 华为技术有限公司 | 一种发布数据索引方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2031818B1 (en) | 2010-04-07 |
US8136122B2 (en) | 2012-03-13 |
EP2031818A1 (en) | 2009-03-04 |
ATE463918T1 (de) | 2010-04-15 |
DE602007005800D1 (de) | 2010-05-20 |
US20090064182A1 (en) | 2009-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101420391A (zh) | 由触发器子系统提供专用及基于标准触发器的系统和方法 | |
US11411897B2 (en) | Communication method and communication apparatus for message queue telemetry transport | |
CN101945056A (zh) | 基于策略的jms中间件群的系统和/或方法 | |
US11409719B2 (en) | Co-locating microservice persistence containers within tenant-specific database | |
CN103944924B (zh) | 一种基于RESTful的泛在网发布订阅中间件模型的方法 | |
CN101854351A (zh) | 用于基于标准的消息传输的系统和/或方法 | |
CN103038788B (zh) | 提供多个网络资源 | |
CN103957248B (zh) | 一种基于物联网的公共实时数据管理云服务平台 | |
JP5956565B2 (ja) | メッセージングアプリケーションプログラムインターフェイスを提供するためのシステムおよび方法 | |
US6907406B2 (en) | On-demand service expanding system and method for providing services | |
CN100462957C (zh) | 基于隐私策略的消息路由方法和系统 | |
US20030088659A1 (en) | System and method for distributed state management | |
CN109614209B (zh) | 一种任务处理方法、应用服务器及系统 | |
KR101545626B1 (ko) | Dds-db 연동 시스템 | |
CN107590072A (zh) | 一种应用开发和测试的方法和装置 | |
CN104685852A (zh) | 用于使用请求的小批处理的系统和方法 | |
CN101827077A (zh) | 数据传送系统和数据传送方法 | |
CN101176068B (zh) | 用于有助于企业信息系统和客户之间的通信的装置、系统和方法 | |
EP2811437A1 (en) | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application | |
CN110532106A (zh) | 进程间的通讯方法、装置、设备和存储介质 | |
CN113051044A (zh) | 一种基于无服务架构的分布式事务处理方法及装置 | |
CN100461124C (zh) | 计算机系统和信息处理方法 | |
CN113168405B (zh) | 数据库管理服务提供系统 | |
JP4131781B2 (ja) | 分散処理型データベース管理システム | |
CA2677367C (en) | Interface module |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090429 |