CN101854351A - 用于基于标准的消息传输的系统和/或方法 - Google Patents
用于基于标准的消息传输的系统和/或方法 Download PDFInfo
- Publication number
- CN101854351A CN101854351A CN201010155132A CN201010155132A CN101854351A CN 101854351 A CN101854351 A CN 101854351A CN 201010155132 A CN201010155132 A CN 201010155132A CN 201010155132 A CN201010155132 A CN 201010155132A CN 101854351 A CN101854351 A CN 101854351A
- Authority
- CN
- China
- Prior art keywords
- message
- trigger
- file
- network service
- jms
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Laminated Bodies (AREA)
Abstract
本文公开的实施例涉及根据发布-订阅模型(或其变形之一)建立的应用集成技术。在一些实施例中,第一基于标准的消息传输协议(例如,JMS消息传输协议)可以用于建立触发器以便根据第二基于标准的消息传输协议(例如,SOAP)的消息信封可以通过所述第一基于标准的消息传输层传送。换而言之,在一些实施例中,根据第一协议(例如,JMS)的触发器可具有根据与之相关的第二协议(例如,SOAP)的消息,以便使所述消息能够通过所述第一协议传输层传送。所述触发器可配置为通过所述JMS消息传输协议接收来自网络服务用户的消息,并且将所述消息传递给所述网络服务堆栈以分发到网络服务提供商。类似地,对于请求-应答网络服务交换模式,所述触发器可配置为:当由网络服务层的返回时,通过所述JMS消息传输协议从所述网络服务提供者发送应答消息到所述网络服务用户。
Description
相关申请的交叉引用
本申请通过引用并入共同待决和共同受让的11/896,310号美国申请的全部内容。
技术领域
本文公开的实施例涉及应用集成技术,并且更为具体地,涉及根据发布-订阅模型(或其变形之一)建立的应用集成技术。在一些实施例中,第一基于标准的消息传输协议(例如,JMS消息传输协议)可以用来建立触发器以便根据第二基于标准的消息传输协议(例如,SOAP)的消息信封可以通过所述第一基于标准的消息传输层传送。换而言之,在一些实施例中,根据第一协议的触发器可具有根据与所述第一协议相关的第二协议的消息以便所述消息能够通过所述第一协议的传输层传送。在一些实施例中可实施配置驱动的方法以便提供这样的功能而又提供一些增值的特征。
背景技术
当今公司肩负着实施用于他们各自企业内的许多类型的集成挑战的解决方案的任务。这些挑战中的许多牵涉应用集成问题(例如,软件应用和/或其他一些系统两者之间和/或所述应用软件和其他一些系统之中的集成问题)且落入通用模式。
例如,第一方面涉及类似业务对象从一个系统到多个其他系统(例如,以订单状态变化或产品价格变化的形式)的传播。第二方面涉及两个或两个以上系统之间的类似业务对象的同步以获得单一视图,例如,客户、产品注册、产品订单以及几种应用之中的产品SKU信息的实时同步。这是需要集成解决方案的最常见的问题。在单向同步中,通常有充当数据源的一个系统(例如,资源)和作为所述同步的目标的一个或一个以上资源。在双向同步中,每个资源通常既是潜在的源又是同步的目标。充当所述原始数据资源的通常不是单个资源。因此,任何资源的变化应该在所有其他资源上有体现。第三方面包括从多个源进入共同的目标系统的信息,例如,传送药房客户记录和处方交易以及网络数据进入中央应用和数据库。
已提供了各种不同的工具使用户能够设计和部署使用,例如,发布-订阅模型或其变形中的一种应对这些挑战的解决方案。所述发布-订阅模型是特定类型的基于消息的方案,在所述方案中消息通过消息代理匿名地交换。输出需要被共享的信息的应用程序以特定类型的可识别文件的形式使所述信息可用,其中所述可识别文件发布给所述消息代理。需要信息的应用程序订阅其需要的文件类型。
在运行期间,所述消息代理接收来自发布者的文件并且随后将所述文件分送给订阅者。所述订阅应用程序使用所述文件处理或执行工作,可能发送或可能不发送响应到所述发布应用程序。
在典型系统中,集成服务器或在集成服务器运行的应用程序向代理发布文件。所述代理随后发送所述文件到位于其他集成服务器的订阅者。所述集成服务器和所述代理共享高速、有效的进程用于穿过整个系统交换文件。
虽然这样的技术在提供解决上述挑战方面的方案上已经成功,但是仍然有进一步提高的可能。例如,所述集成服务器(IS)“触发器系统”提供丰富的基础结构用于消息处理(例如,异步消息处理)。然而,此功能仅适用于通过专有(例如,代理)消息传输协议的消息传输。因此,用户当前必须做出艰难的设计决策,在功能丰富的专有协议或基于标准的彼此协作的消息传输协议(例如,JMS)之间选择。
解决所述问题的一种方法包括使用向集成服务器提供的JMS适配器。因而,专有“触发子系统”(由所述集成服务器提供用于专有消息传输)和单独的JMS适配器两者都提供给所述集成服务器。
不幸地,所述方案多少有些不完整。尤其,尽管JMS适配器可用于基于标准的彼此协作的消息传输,但是“触发子系统”的功能不能充分利用在与JMS的连接。这就是说,想要利用“触发子系统”的扩展功能而又使用JMS适配器的用户将不得不对于每个新应用在其应用程序中定制实现这些功能。这通常强加了相当大的配置和编程要求,并且导致了过多的相同和/或类似功能的非标准化实现。当JMS仍处于标准化进程中以用于网络服务环境下时,更加剧了这个问题。实质上,这意味着如果要求与所述专有代理功能媲美,将不得不在应用服务层屡次执行所述功能。即使在已经实现这样的方法的情况下,所述功能还未被标准化,例如,因为企业在组织、程序、要求、设施等方面均不相同。
因此,问题依然是没有一种单一的方法来使当前“触发子系统”及其全部功能与基于标准的消息传输(例如,通过JMS)结合。因此,仍然存在一方面功能丰富的专有协议和另一方面基于标准的彼此协作的消息传输(例如,JMS)的均衡。
因此,应当认识到在本领域需要改进的技术用于在一个或多个上述方面和/或其他方法提供应用集成方案。
发明内容
一方面,本发明的一些实施例涉及提供丰富功能组以用于处理应用集成挑战的消息传输层,所述应用集成可通过存在于所述应用层外部的专有和开放消息传输结构两者访问。在一些实施例中,这样的消息传输结构可以为“触发器”的形式,并且在一些实施例中,这样的触发器可以使解决所述集成挑战的发布-订阅类型的方案成为可能。一些实施例中的所述触发器可以是JMS触发器。
另一方面,一些实施例涉及通过共用触发子系统接入的并行子系统,其中提供所述共用触发子系统在所述相应的触发子系统之上作为增值层。
再一方面,一些实施例涉及基本完全地嵌入JMS作为所述集成服务器触发子系统中的专有消息传输协议的对等者,这样全部的或基本上全部现有功能将是JMS使能的。
又一方面,一些实施例涉及在没有使用用于集成服务器的特殊适配器的情况下能够进行JMS传输消息的消息传输层的使用。此外,在一些实施例中,这样的消息传输层可以使避免对所述JMS触发器本身进行任何修改成为可能和/或在一些实施例中可减少在应用服务等级上的自定义编程和/或实现的需要。
在一些实施例中,提供与应用集成系统一起使用的触发子系统。至少一个专有触发子系统嵌入到所述触发系统中。至少一个基于标准的触发子系统基本完全地嵌入到所述触发子系统中。为所述至少一个专有触发子系统和至少一个基于标准的触发子系统提供共用触发设备。提供所述至少一个专有触发子系统和至少一个基于标准的触发子系统作为并行子系统。每个所述专有触发子系统和每个所述基于标准的触发子系统被配置为获取相应的触发层。每个所述触发层配置为按照与各触发层有关的格式提供触发器。所述触发器包括用于使进程将在所述应用集成系统或其元件中执行或者将由所述所述应用集成系统或其元件执行的指令。
在其他一些实施方式中,提供消息传输层穿越集成服务器或集成服务器实例使用,该集成服务器实例作为应用集成系统中的元件。触发子系统包括:嵌入到所述触发子系统中的至少一个专有触发子系统、基本完全嵌入到所述触发子系统的至少一个基于标准的触发子系统、以及用于所述至少一个专有触发子系统和至少一个基于标准的触发子系统的共用触发设备。提供所述至少一个专有触发子系统和至少一个基于标准的触发子系统作为所述触发子系统中的并行系统。为每个所述专有触发子系统和每个所述基于标准的触发子系统分别提供多个并行触发层。为每个所述专有触发子系统和每个所述基于标准的触发子系统分别提供多个消息传输API层。每个所述触发层配置为按照与各触发层有关的格式提供触发器。所述触发器包括用于使进程将在所述应用集成系统或其元件中执行或者将由所述应用集成系统或其元件执行的指令。
根据一些实施例,提供了配置应用集成系统的方法。提供消息传输层穿越集成服务器或作为所述应用集成系统中的元件的集成服务器实例使用。在所述消息传输层中,包括触发子系统。至少一个专有触发子系统嵌入到所述触发子系统中。至少一个基于标准的触发子系统基本完全地嵌入到所述触发子系统中。所述触发子系统配置成为所述至少一个专有触发子系统和至少一个基于标准的触发子系统提供共用触发设备。为每个所述专有触发子系统和每个所述基于标准的触发子系统分别提供多个触发层。为每个所述专有触发子系统和每个所述基于标准的触发子系统分别提供多个消息传输API层。提供所述至少一个专有触发子系统和至少一个基于标准的触发子系统作为所述触发子系统中的并行子系统。每个所述触发层配置为按照与所述相应的触发层有关的格式提供触发器。所述触发器包括用于使进程将在所述应用集成系统或其元件中执行或者将由所述应用集成系统或其元件执行的指令。
根据其他一些实施例,提供了运行基于发布-订阅模型或该发布-订阅模型变形的应用集成系统的方法。提供消息传输层穿越集成服务器或作为所述应用集成系统中的元件的集成服务器实例使用。所述消息传输层包括包含在该消息传输层中的触发子系统,其中所述触发子系统包括嵌入在该触发子系统中的至少一个专有触发子系统和基本完全地嵌入在所述触发子系统中的至少一个基于标准的触发子系统,并且所述触发子系统配置成为所述至少一个专有触发子系统和至少一个基于标准的触发子系统提供共用触发设备。包括在所述消息传输层的还有为每个所述专有触发子系统和每个所述基于标准的触发子系统分别提供的多个触发层,其中每个所述触发层配置为按照与所述相应的触发层有关的格式提供触发器。在所述触发器中,包括用于建立针对可发布文件类型的订阅和用于指定一个或一个以上服务来处理由所述订阅接收到的文件的指令。依赖包含于相应触发器中的指令,将一个或一个以上文件发布给一个或一个以上订阅者。依赖包含于所述相应触发器中的指令,处理每个所述文件。提供所述至少一个专有触发子系统和至少一个基于标准的触发子系统作为所述触发子系统中的并行子系统。
虽然这些特征、方面以及实施例是有优势的,但进一步改进仍然是有可能的。例如,使用基于标准的触发器处理所述触发器传输层上的相同或不同类型的消息会是可取的。这就是说,使用第一基于标准的消息传输协议(例如,JMS消息传输协议)创建触发器将会有益,所以根据第二基于标准的消息传输协议(例如,SOAP)的消息信封可以通过所述第一基于标准的消息传输层传送。这种方法使用户能够潜在地认识到使基于标准的触发器和基于标准的消息结合的益处。实施针对这种技术的基于标准和配置驱动的方法将更加可取。例如,可以根据将所述基于标准的触发器与所述第二基于标准的消息传输协议链接或绑定的绑定规范实施针对这种技术的基于标准和配置驱动的方法。
因此,应当会理解有需要离开专有实施而迈向基于标准和配置驱动的方法来传输消息,所述方法需要使用基于标准的触发器来使得其他消息类型的信封能够通过触发器传输层发送。
一种对所述消息有利的协议为SOAP。众所周知,SOAP是用于在分散式、分布式环境下交换信息的简便协议。SOAP是基于XML的协议,包括三部分:信封,它定义了用于描述消息内是什么以及该消息如何被处理的框架;一系列编码规则,用于表示应用程序定义的数据类型的实例;协定,用于表示远程程序调用和响应。SOAP消息可以被用来,例如,在计算机网络的网络服务的实施过程中交换结构化的信息。
不幸的是,当前产品不提供基于标准和配置驱动的方法用于通过所述JMS传输处理SOAP消息。实际上,如果提供了任何基于JMS的SOAP(SOAP over JMS)消息传输方法,那么所述SOAP消息传输方法将必须不得不依靠专有技术而不是基于标准和配置驱动技术。这是(部分)由于如下事实:在基于JMS1.0规范的SOAP的工作草案只是最近刚刚由W3C发布以及网络服务方案提供商除了本发明的受让人一般不会在提供基于标准和配置驱动方法以传输消息方面大量投资。最近发布的“最后请求(lastcall)”W3C规范版本可在http://www.w3.org/TR/soapjms上找到,并且据此将其全部内容并入本文中。缺少SOAP和JMS之间这样的绑定规范使实施基于标准和配置驱动的方法来提供这样的功能是不可能的。因此,即使网络服务方案提供商对基于标准和配置驱动的协议感兴趣,他们也不可能做得如此可靠和可预测。
因此,人们相信现有技术依靠专有绑定,这不利地将用户锁在封闭系统中,该封闭系统可能不一定是可变化和可扩展的,并且甚至可能与由标准制定组织(例如,W3C)最终公布的任何标准冲突。
因此,一方面,一些实施例涉及提供基于标准和配置驱动方法以传输消息,其中,第一基于标准的消息传输协议用来建立触发器以便根据第二基于标准的消息传输协议的消息信封可以通过所述第一基于标准的消息传输层传送。换而言之,在一些实施例中,根据第一协议的触发器可具有根据与所述第一协议相关的第二协议的消息以使所述信息能够通过所述第一协议的传输层传送。
另一方面,一些实施例涉及为处理基于JMS传输的SOAP消息提供支持。
一些实施例涉及配置为通过消息代理交换消息的应用集成系统。运行时触发器(runtime trigger)配置为根据从上下文池获取的上下文通过所述消息代理的客户端队列接收来自消息生产者的消息。所述消息是通过传输协议接收的,并且消息信封与之关联。所述消息信封是根据第二消息传输协议被确定格式。所述运行时触发器进一步配置为从运行时传输消息中提取消息信封。网络服务栈被配置为接收由所述运行时触发器从所述传输消息中提取的消息信封,并且进一步配置为根据包括在所述消息信封中的指令从多个可能的服务中调用合适的服务。
一些实施例涉及被配置为通过消息代理交换消息的应用集成系统。网络服务连接器被配置为通过产生运行时消息(runtime message)信封来调用远程网络服务,其中所述消息信封将被传递到所述网络服务栈以传输到所述消息代理的客户端队列。通过传输协议发送所述消息,并且该消息具有与所述传输协议关联的消息信封。根据第二消息传输协议确定所述消息信封的格式。所述网络服务连接器是根据网络服务描述符(WSD)产生。WSD指定所述消息信封的至少一种格式,以及目的地(例如,JMS目的地)。任选地,可在一个或一个以上网络位置上调用所述网络服务。所述消息代理被配置为将任何接收到的消息放入所述消息用户的客户端队列中。
一些实施例涉及被配置为通过消息代理交换消息的应用集成系统。网络服务连接器被配置为通过产生运行时消息信封来调用远程网络服务,其中所述消息信封将被传递到所述网络服务栈以传输到所述消息代理的客户端队列。所述消息通过传输协议发送,并且该消息具有与所述传输协议关联的消息信封。根据第二消息传输协议确定所述消息信封的格式。所述消息用户(或运行时触发器)被配置为根据从上下文池中获取的上下文接收来自所述生产者的运行时消息。所述消息用户进一步被配置为从所述传输的运行时消息中提取消息信封。网络服务栈被配置为接收由所述消息用户从所述传输的运行时消息中提取的消息信封,并且进一步被配置为根据包括在所述消息信封中的指令从多个可能的服务中调用合适的服务。在设计期间根据网络服务描述符(WSD)产生所述网络服务连接器。WSD指定所述运行时消息信封的至少一种格式和一个或一个以上网络位置,其中在所述网络位置上可调用所述网络服务。所述消息代理配置为将任何接受到的运行时消息放入所述消息用户的客户端队列中。
一些实施例涉及应用集成系统中的消息传输方法。提供了被配置为将消息从消息生产者传递到消息用户的消息代理。启用网络服务连接器,网络服务连接器被配置为通过产生运行时消息信封调用远程网络服务与所述消息用户通信,其中所述消息信封将传递到所述网络服务栈以传输到所述消息代理的客户端队列。通过使用从连接池(connection pool)中获取的连接与所述网络服务连接器连接的调度器发送所述运行时消息到所述消息代理,其中所述运行时消息通过传输协议发送并且具有与所述传输协议有关的消息信封,并且根据第二消息传输协议确定所述消息信封格式。来自生产者的所述运行时消息在所述消息用户上由所述代理根据从上下文池中获取的上下文接收。所述消息信封从所述被传输的运行时消息中提取。所述消息信封从所述消息用户传递到网络服务栈。根据包括在所述消息信封中的指令,通过所述网络服务栈从可操作地连接到该网络服务堆栈的多个可能的服务中调用合适的服务。所述消息代理被配置为将任何接收到的运行时消息放入所述消息用户的客户端队列中。
这些方面和实施例可以单独使用和/或以各种不同的组合应用以达到再进一步实现本发明。
附图说明
参考下面示例性实施方式结合附图的详细描述,可以更好和更充分地理解这些特征以及优势和其他特征以及优势,其中:
图1是示例性应用集成系统的示意图;
图2是图示了集成服务器如何在代理被连接时将文件发布或者传送到代理的框图;
图3是图示了集成服务器是如何在代理不可使用时发布文件的框图;
图4是图示了集成服务器在请求/应答同步时将文件发布到代理并且等待应答的框图;
图5是图示了集成服务器为发布的文件订阅路径的框图;
图6是图示了集成服务器为传送至默认客户端的文件订阅路径的框图;
图7是图示了用于本地发布文件的发布路径和订阅路径的框图;
图8显示了发布-订阅模型集成解决方案的两端,其中可发布文件类型与相同的代理文件类型关联;
图9是表示现有的信息协议的示例性框图;
图10是表示根据一种实施例的消息传输层的示例性框图;
图11是根据一种实施例的结合专有的和基于各种标准的触发器的示例性应用集成系统的示意图;
图12是图示根据一种实施例的消息生产者的“in-only”消息交换模式运行的框图;
图13是图示根据一种实施例的消息生产者的“in-out”或者“请求-应答”消息交换模式运行的框图;以及
图14是图示根据一种实施例的消息用户运行的框图。
具体实施方式
现在将对示例性应用集成系统及其运行的示例方法进行描述。应当理解,下面的描述是为了举例说明而非限制本发明。事实上,下面描述的实施方式反映了结合一种发布-订阅方法的一般性技术来提供由本申请的受让人发展的应用集成解决方案,该技术可与某些实施例的消息传输层、触发器以及触发器子系统一起使用。
现在更具体地参考附图,图1是示例性应用集成系统100的示意图。图示了多个集成服务器102,每一个集成服务器102都与代理106通信。图示了第一集成服务器102,同样图示了第二集成服务器102’,所述集成服务器102’包括多个适配器108。图中还示出了集成服务器群102”,并且该集成服务器群102”包括向其提供的多个适配器108’。
一般而言,集成服务器是系统的中央运行时元件。它作为将被集成的系统和应用程序的入口点,并且它是用于执行集成逻辑的系统主要引擎。它还提供了基本处理器和设备,该基本处理器和设备管理来自企业内部或者外部的资源104(或者资源群104’)的信息的有序处理。集成服务器102将文件发布到代理或者从代理接收文件。
代理106形成本文所描述的示例元件的可潜在全面升级的消息传输中枢。它提供了用于实现异步的、基于消息的解决方案的基础结构,该基础结构是以发布-订阅模型或者其变形之一(例如,请求/应答、发布和等待及其类似模式)为基础建立的。
代理106在信息生产者(例如,发布者)和信息用户(例如,订阅者)之间发送文件。因此,代理106接收、排队等待和发送文件。代理106维护其识别的文件类型的注册。它也维护对接收到的那些类型的文件感兴趣的订阅者名单。当代理106接收发布的文件时,该代理106为那种文件类型的订阅者对发布的文件进行排队。订阅者从他们的队列中重新获取文件。这种动作通常在订阅者系统上触发处理文件的活动。
多种代理106可任选地提供给系统100。多种代理106可成组地运行,称为代理区,该代理区允许几个代理106共享文件类型和订阅信息。
以下描述了使用发布-订阅模型的集成解决方案的基本构建模块。例如,这些构建模块包括文件、可发布的文件类型、触发器、服务、适配器通知以及规范文件。
在基于发布-订阅模型的集成解决方案中,应用程序发布和订阅文件。文件是上述元件可用于封装和交换数据的对象。文件表示资源传到所述元件的数据主体。通常,它表示商业事件,例如,下订单(例如,通过购买订单文件)、运送货物(例如,通过运送通知单)、增加新员工(例如,通过新员工记录)等。
每个发布的文件包括一个信封。该信封很像电子邮件消息中的头部。信封记录信息,例如:发送者地址、发送文件的时间、序列号、和/或用于路由和控制的其他有用信息。它包括有关文件和该文件经由系统传输的信息。
每个发布的文件与可发布的文件类型有关。可发布的文件类型是一个指定的类似模式的定义,该定义描述了可被发布和订阅的特定类型文件的结构。可发布的文件类型的实例可在集成服务器内本地发布或者可发布到代理。在包括代理的发布环境中,每个可发布的文件类型可与代理文件类型绑定。代理上的客户订阅可发布的文件类型。代理利用可发布的文件类型决定为哪个客户端分配文件。
在本文描述的某些实施例的发布-订阅模型中,触发器建立可发布文件类型的订阅。触发器也指定将处理通过该订阅接收到的文件的服务。在触发器内,状态将一个或多个可发布的文件类型与服务联系起来。
服务是类似方法的工作单元。它们包括集成服务器执行的程序逻辑。服务可用来执行工作,例如,从文件提取数据,与后台资源交互、向代理发布文件等。当触发建立时,用户可指定将用于处理订阅文件的服务。
特定事件无论何时在适配器资源上发生,适配器通知都通知系统。适配器通知在特定事件在资源上发生时发布文件。每个适配器通知具有相关的可发布的文件类型。触发器可用于订阅与适配器通知相关的可发布的文件类型。例如,与在触发条件下,可发布文件类型相关的服务可基于适配器通知内容进行一些额外处理、更新、和/或同步。
标准文件是文件在经过系统传输时可呈现的标准化表示。标准文件充当资源之间的中间数据格式。例如,在接受来自公司的购买订单的实施方式中,进程中的一个步骤可将购买订单文件转换成公司的标准购买订单格式。这种格式被称为购买订单文件的“标准”格式。标准文件被发布、发送,并且传到处理购买订单的服务。
通过将文件转换成中立的中间格式,订阅者(例如,适配器服务)仅需要知道怎样将标准文件转换成所需要的应用格式。如果不使用标准文件,每个订阅者必须能够将每个发布者的原始文件格式解码。
标准文件是可发布的文件类型。标准文件可在建立发布业务时使用,并且在建立触发时订阅。在流程服务中,文件可被从应用的原始格式映射成标准格式。
在此,参照图2至图7对发布和订阅路径进行示意性概述。如上所述,集成服务器通过发布和订阅进行文件交换。一个集成服务器发布文件,然后一个或多个集成服务器订阅并处理所述发布的文件。所述集成服务器通常与所述代理进行交互以发布和订阅文件。例如,集成服务器可以向所述代理发布文件、集成服务器可以从所述代理获取文件,和/或集成服务器可以本地发布和订阅文件。
当集成服务器配置为与代理连接,所述集成服务器便可以向所述代理发布文件。然后所述代理将所述文件路由至所有的订阅者。下面说明了三个示例性的发布路径场景:文件发布至所述代理、文件在所述代理不可用时发布至所述代理和文件发布至所述代理并且等待应答(例如,在类似请求/应答场景中)。如果没有为集成服务器配置代理,则所有发布将变为本地发布,并且将不能向特定的接收方传递文件。下面将会更为详细地描述这种可能性。
图2是图示了集成服务器在与代理连接时是如何向所述代理发布或者传递文件的框图。当所述集成服务器向配置的代理发送文件时,所述集成服务器或是发布该文件或是传递该文件。当所述集成服务器发布文件时,它可以向所有订阅者进行广播。所述代理将所述文件路由至订阅该文件的所有客户端。当所述集成服务器传递文件时,所述传递请求对所述文件接收方进行识别。所述代理会将所述文件放入专属于所述特定客户端的队列中。
设置于集成服务器102的发布服务202将文件发送至调度器204(或者当适配器监视的资源上发生事件时,适配器通知发布文件)(S201)。在集成服务器102向调度器204发送文件之前,集成服务器102对照可发布文件类型对所述文件进行验证。如果所述文件无效,服务202将返回说明验证错误的异常。调度器204从连接池206获取连接(S202)。连接池206是连接208的备用集,集成服务器102使用连接208向代理106发布文件。为了向代理106发布文件,集成服务器102将使用用于默认客户端的连接208。调度器204将所述文件发送至代理106(S203)。
代理106检查所述文件的存储类型以决定怎样存储所述文件(S204)。例如,如果所述文件是易失型的,代理106会将所述文件存储在内存210中。如果所述文件是保证型的,代理106则可能将所述文件存储在内存210中和/或磁盘212上。
代理106将所述文件路由至订阅者(S205)。如果所述文件已经被发布(例如,广播),则代理106将识别订阅者并为每个订阅者在所述客户端队列(例如,第一队列214a和第二队列214b)中放置一份所述文件的副本。如果所述文件已经被传递,则代理106会把文件放置在在所述传递请求中指定的客户端队列中(第一队列214a和第二队列214b之一)。如果所述文件没有订阅者,则代理106会给发布器202返回确认并且随后丢弃所述文件。然而,如果所述文件存在死信订阅(deadletter subscription),代理106会将所述文件寄存在包含所述死信订阅的队列中(例如,第一队列214a和第二队列214b二者或其中之一)。文件保持在所述代理106上的所述队列中(例如,第一队列214a和第二队列214b二者或其中之一)直到被所述订阅客户端获取。如果所述文件的生存时间消逝,代理106将丢弃所述文件。所述生存时间可预先定义,例如,由用户定义。如果所述文件是保证型的,代理106将向调度器204返回确认以指示所述文件成功接收和存储(S206)。调度器204将连接208返回给连接池206。集成服务器102将控制交还给发布服务202,发布服务202执行下一步骤(S207)。
可以对可发布文件类型和集成服务器102进行配置以使集成服务器在文件发布的时候不对所述文件进行验证。同时,如果在集成服务器102发布文件的时候发生了瞬态错误,所述审计子系统会记录所述文件并给所述文件分配一个“失败”状态。瞬态错误起因于可能会被快速解决的状态,例如,与网络问题有关的资源不可用或者连接数据库失败。可以用监视器找回并重新提交带有“失败”状态的文件。
图3是图示了所述集成服务器在所述代理不可用时如何发布文件。简而言之,集成服务器102不断地监测其到代理106的连接208,并且如果集成服务器102确定出配置的代理106不可用,则该集成服务器可更改所述发布路径。如果没有连接代理106,集成服务器102将把保证型文件路由至出站文档存储器302。所述文件将会保持在出站文档存储器302中直至到代理106的连接208重新建立为止。
设置于集成服务器102的发布服务202将文件发送至调度器204(或者当在适配器监视的资源上发生事件时,适配器通知发布文件)(S301)。在集成服务器102将所述文件发送至调度器204之前,集成服务器102对所述文件的可发布文件类型进行验证。如果所述文件无效,服务202将返回异常说明验证错误。调度器204监测代理106不可用,则相应地,所述文件将会被存储。例如,如果所述文件是保证型的,则调度器204会路由所述文件到所述出站文档存储器302(例如,在磁盘上)。如果所述文件是易失型的,则调度器204丢弃所述文件并且由发布服务202抛出异常。集成服务器102执行所述发布服务的下一步骤。
当集成服务器102重新建立了与代理106的连接,该集成服务器102会从连接池206中获取单个连接(S303)。集成服务器102将所述文件从出站文档存储器302自动发送到代理106(S304)。为了加快所述出站文档存储器的清空速度,集成服务器102可以以成批的方式发送所述文件而不是每次发送一个。需要理解的是,集成服务器102可以使用单个连接208以清空出站文档存储器302,例如,为了维持发布顺序。
代理106检查所述文件的存储类型,确定其为保证型,将所述文件存储在存储器210和磁盘212上(S305)。代理106将所述文件路由至订阅者(S306)。如果所述文件已经被发布(例如,广播),则代理106将识别订阅者并将一份所述文件的副本放置到每个订阅者的客户端队列(例如,第一客户端队列214a和第二客户端队列214b)中。如果所述文件已经被传递,代理106会把文件放置在在所述传递请求中指定的客户端队列中(第一客户端队列214a和第二客户端队列214b之一)。如果所述文件没有订阅者,代理106会给发布器202返回应答并且在此之后丢弃所述文件。然而,如果所述文件存在死信订阅(deadletter subscription),代理106会将所述文件寄存在包含所述死信订阅的队列中(例如,第一客户端队列214a和第二客户端队列214b或者其中之一)。文件在由所述订阅者重新获取之前将一直保持在代理106上的所述队列中(例如,第一客户端队列214a和第二客户端队列214b或者其中之一)。如果所述文件的生存时间消逝,代理106将丢弃所述文件。所述生存时间可预先设定,例如,由用户设定。如果所述文件是保证型的,代理106会向调度器204返回应答以指示所述文件的成功接收并且存储(S306)。调度器204向连接池206返回连接208,代理106向集成服务器102返回确认以指示所述文件的成功接收并且存储(S307)。集成服务器102将所述文件从所述出站文档存储器302中移除。
如果可以在代理106不可用时防止已发布文件被放入出站文档存储器302中,可配置所述集成服务器102改为抛出异常。在与代理106的连接重新建立之后,集成服务器102可发送所有新近发布的文件至出站文档存储器302直到出站文档存储器302被清空。这样使得集成服务器102能维持发布顺序。在集成服务器102清空出站文档存储器302之后,集成服务器102可以恢复直接向代理106发布文件。
如果集成服务器102做了预定数量的尝试(例如,3、4、5等)以从出站文档存储器302向代理106传送文件并且所有尝试均告失败,则审计子系统可以登记所述文件并为其分配“过多尝试(TOO MANY TRIES)”的状态。如果在集成服务器102发布文件的时候发生了瞬态错误,则所述审计子系统会登记所述文件并为其分配“失败(FAILED)”的状态。可以对可发布文件类型和所述集成服务器102进行配置以使在发布文件的时候集成服务器102不对文件进行验证。可以使用监视器找回并重新提交带有“过多尝试”或者“失败”状态的文件。
图4是图示了当请求/应答为同步时集成服务器向所述代理发布文件并等待应答的框图。在发布-等待的情形中,服务发布文件(例如,请求)然后等待应答文件。这有时也称为请求/应答模式。请求/应答可以是同步或异步的。在同步请求/应答中,在等待应答的时候,停止执行发布流程服务。当所述服务从所述特定的客户端接收到应答文件,所述服务会恢复执行。在异步请求/应答中,在发布所述请求文件之后所述发布流程服务会继续执行。即,在执行流程服务的下一步骤之前,所述发布服务不等待应答。所述发布流程服务调用单独的服务重新获取所述应答文件。
发布服务202发送文件(例如,所述请求)到调度器204(S401)。集成服务器102在所述文件信封中将唯一标识符填入标签域,所述唯一标识符用于匹配所述应答文件和所述请求。发布服务202进入等待状态。发布服务202在其从订阅者接收到应答或所述等待时间消逝之前将不恢复执行。集成服务器102会一发布所述文件就开始追踪所述等待时间。在集成服务器102向所述调度器204发送所述文件之前,它可以对文件的可发布文件类型进行验证。如果所述文件无效,服务202将返回指示所述验证错误的异常。然后服务202将解锁,但是带有异常。
调度器204从连接池206获取连接(S402)。连接池206是连接208的一个备用集,集成服务器102使用该备用集向代理106发布文件。为了向代理106发布请求文件,集成服务器102将使用用于请求/应答客户端的连接208。如果代理106不可用,调度器204将把所述文件路由至出站文件存储器302,例如,如上所述。调度器204向代理106发送所述文件(S403)。
代理106检查所述文件的存储类型以确定如何存储所述文件(S404)。例如,如果所述文件是易失型的,则代理106将所述文件存储在存储器210中。如果所述文件是保证型的,则代理106把所述文件存储在存储器210中和磁盘212上。代理106将所述文件路由至订阅者(S405)。如果所述文件已经被发布(例如,广播),则代理106将识别订阅者并放置一份所述文件的副本到每个订阅者的客户端队列(例如,第一客户端队列214a和第二客户端队列214b)中。如果所述文件已经被传递,代理106将把文件放置在所述传递请求中指定的客户端的队列中(第一客户端队列214a和第二客户端队列214b之一)。如果所述文件没有订阅者,代理106则向发布器202返回确认并且在此之后丢弃所述文件。然而,如果所述文件存在死信订阅(deadletter subscription),代理106则将所述文件寄存在包含所述死信订阅的队列中(例如,第一客户端队列214a和第二客户端队列214b二者或之一)。文件在由所述订阅者拾起之前将保持在代理106上的所述队列中(例如,第一客户端队列214a和第二客户端队列214b二者或之一)。如果所述文件的生存时间消逝,代理106将丢弃所述文件。所述生存时间可预先设定,例如,由用户设定。如果所述文件是保证型的,代理106会向调度器204返回确认以指示所述文件的成功接收并且存储(S406)。调度器204将连接208交还给连接池206。
订阅者获取并处理所述文件(S407)。订阅者使用服务(未示出)组成并发布应答文件。该服务自动地将与在所述请求文件信封中的标签域中使用的相同值填入所述应答文件信封中的标签域。所述服务也自动指定请求客户端为所述应答文件的接收方。一个或多个订阅者向代理106发送应答(S408)。代理106存储所述应答文件,例如,存储在存储器210中。代理106将所述应答文件放置在发起所述请求的集成服务器102的请求/应答客户端队列中。
发起所述请求的集成服务器102从连接池206获取请求/应答客户端并且从代理106获取所述应答文件(S409)。集成服务器102使用所述应答文件的标签值对所述应答和所述源请求进行匹配(S410)。集成服务器102将所述应答文件放置在等待服务404的通道内(S401)。所述等待服务恢复执行。
如果所述请求服务指定所述应答文件的可发布文件类型,则要求所述应答文件符合所指定的类型。否则,所述应答文件可能是任意可发布文件类型的某一个。应当可以理解,单次请求可能会接收到多个应答。发起所述请求的集成服务器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执行与该条件相关的触发服务S502a(S504)。如果该文件不符合触发条件,集成服务器102会丢弃该文件,向代理106返回一个确认,并把服务器线程返回到服务器线程池。集成服务器102也可能生成一个日志记录消息,该日志服务消息用来说明该文件不符合触发条件。
触发服务执行至完成(例如,直到成功或者出错)(S506)。如果触发服务502a成功执行,则集成服务器102向代理106返回一个确认(例如,如果这是一个保证型文件)。然后,集成服务器102将该文件的副本从触发队列214a中移除并将服务器线程器返回至服务器线程池。如果发生服务异常,触发服务502a异常结束并且集成服务器102拒绝该文件。如果该文件是保证型,集成服务器102向代理106返回一个确认。集成服务器102从触发队列214a中移除该文件的副本,将服务器线程返回至所述线程池,并发送错误文件以指示已发生错误。如果在触发服务执行过程中发生了瞬态错误并且该服务发现了该错误,则将该错误打包并作为异常重新抛出,然后集成服务器102等待重试间隔的时长(可以预先设定和/或用户指定)并利用原始文件作为输入重新执行该服务。如果集成服务器102达到了重试的最大次数(也可以预先设定和/或用户指定)并且触发服务502a仍然因为瞬态错误而失败,则集成服务器102将最后一次失败视为服务错误。
接收到确认之后,代理106会从保证型存储器212上删除该文件。集成服务器102可能仅仅会返回保证型文件的确认。如果集成服务器102在确认保证型文件之前关闭或者重连接至代理106,则当服务重新启动或者连接恢复时,集成服务器102会从代理106中恢复文件。因此,该文件可以被重新传递。如果触发服务在错误处生成了审计数据并且在审计日志里包括输入通道的副本,则监视器稍后可用来重新调用所述触发服务。
一个文件可能会满足触发器中不止一个条件。然而,集成服务器102只会执行与最先满足的条件相关的服务。触发器的这种处理模式决定了集成服务器102是串行还是并行地处理在触发队列中的文件。在串行处理过程中,集成服务器102按文件放入触发队列的顺序一次一个地处理文件。在并行处理过程中,集成服务器102一次尽可能地处理多个文件,但不一定按照文件放入队列的顺序。应当理解,在并行处理过程中,集成服务器102可以处理文件的数目取决于最大可用的线程数,在一些实施例中,所述最大可用的线程数可以由用户配置。
如果瞬态错误发生在文件获取或者存储期间,则审计子系统会记录该文件并为其分配“失败(FAILED)”状态。瞬态错误是这样一种错误,该错误稍后可能得到解决的条件引起,例如,与网络问题有关的资源不可用或者连接数据库失败。监视器可以用来发现并重新提交带有“失败”状态的文件。同样,触发器可以配置为中止并且如果发生重试失败,则稍后重试。当集成服务器102进行了最大次数的重试尝试并且触发服务因为异常仍然失败时,发生重试失败。
图6是显示了集成服务器订阅传送给默认客户端的文件的路径的框图。发布服务可以通过指定文件的目的地传送文件。例如,发布服务可以指定将接收该文件的代理客户端。当代理接收到传送的文件时,仅在指定客户端的队列中放置该文件的副本。通常,文件被传送至默认客户端。该默认客户端是当集成服务器初次配置与代理的连接时建立的代理客户端。应当理解,如果发布服务指定单独的触发器作为该文件的目的地(例如,发布服务指定触发器客户端ID作为目的地ID),该文件流经的订阅路径与发布文件经过的路径相同。
设置于集成服务器102的调度器204从代理106上的默认客户端的队列中请求文件(S601)。应当理解,默认客户端可以是为集成服务器102建立的代理客户端。只要发布者将文件传送至集成服务器的客户端ID时,代理106在默认客户的代理队列602中放置文件。线程成批地获取传送至默认客户端的文件(S602)。线程一次获取的文件数目由例如默认文件存储器的容量和存储水平以及代理106上的默认客户端的可用文件数目来确定。
调度器204将文件副本放置在(例如在内存中)默认文件存储器604上(S603)。调度器204识别该文件的订阅者并且将所述文件传送给每个订阅者的触发队列214a-214b(S604)。在传递文件情况下,集成服务器102将文件存储到触发队列214。触发队列214位于可存储在磁盘上的触发文件存储器502内。集成服务器102从默认文件存储器604中移除所述文件,并且如果该文件是保证型,则向代理106返回确认(S605)。代理106从默认客户端队列602中移除该文件。
调度器204从服务器线程池中获取线程,从触发队列214a-214b中调出该文件,并且对照触发器的条件评估该文件(S606)。如果对触发器配置为仅一次性处理,集成服务器102首先确定该文件是否为已经由触发器处理过的文件的副本。仅当该文件是新的时,集成服务器102才继续处理该文件。
如果该文件符合触发条件,则集成服务器102执行与该条件相关的触发服务502a、触发服务504b(S607)。如果该文件不符合触发条件,集成服务器102向触发队列214a-触发队列214b发送确认,丢弃该文件(例如,将其从触发队列214a-触发队列214b中移除),并且向服务器线程池返回服务线程。集成服务器102还生成说明文件不符合条件的日志记录消息。
触发服务执行(例如,直至成功或者出错)(S608)。如果触发服务502a、504b成功执行,集成服务器102向触发队列214a-触发队列214b返回确认(例如,如果这是一个保证型文件),从触发队列214a-触发队列214b中移除该文件,并且向所述线程池返回服务线程。如果发生服务异常,触发服务502a、504b异常终止并且集成服务器102拒绝该文件,从触发队列214a-触发队列214b中移除该文件,向所述线程池返回服务线程,并且发送错误文件以表明发生了错误。如果该文件是保证型,集成服务器102可以向触发队列214a-触发队列214b返回确认。触发队列214a-触发队列214b从存储器上移除该保证型文件的副本。如果在触发服务执行期间中发生瞬态错误且该服务发现该错误,打包该错误并作为异常重新发送,然后集成服务器102等待重试间隔的时长并使用原始文件作为输入重新执行该服务。如果集成服务器102进行了最大次数的重试并且触发服务因为瞬态错误仍然失败,则集成服务器102将最后一次失败视为服务错误。
集成服务器102可以将传送的文件保存至可能位于磁盘上的触发文件存储器502上。集成服务器102可以将发布的文件保存至可位于内存上的触发文件存储器502上。如果集成服务器102在处理保存在磁盘上的触发文件存储器中的保证型文件之前关闭,当集成服务器重启时,集成服务器可从触发文件存储器502上恢复该文件。易失型文件可能在内存中存储,并且因此在重启时可能不会被恢复。
如果服务产生关于错误的审计数据并且在审计日志中包含输入通道的副本,则监视器稍后可用来重新调用该触发服务。如上所述,一个文件可能符合触发器中的不止一个条件。然而,集成服务器102仅执行第一个符合条件的相关服务。
触发器的处理模式可以决定集成服务器102是以串行还是并行的方式处理在触发队列中的文件。在串行处理过程中,集成服务器102按照文件放入触发队列的顺序每次一个地进行处理。在并行处理工程中,集成服务器102一次处理尽可能多的文件,而不必按照文件放入队列的顺序。
如果瞬态错误发生在文件获取或者存储期间,审计子系统记录该文件并为其分配“失败(FAILED)”状态。监视器可用来查找并且重新提交带有“失败”状态的文件。触发器可配置为暂停并且如果发生重试失败则稍后重试。在集成服务器进行了最大次数的重试尝试并且触发服务因为异常仍然失败时发生重试失败。
图7为说明用于本地发布文件的发布和订阅路径的框图。本地发布是指在集成服务器内发布文件的处理。在此情形下,只有位于同一集成服务器上的订阅者能够接收和处理该文件。在本地发布中,文件保留在集成服务器内,没有代理参与。本地发布发生在用于发布文件的服务指定该文件应在本地发布时或者发生在集成服务器没有被配置成与代理连接时。
集成服务器102的发布服务202将文件发送至调度器204(S701)。在集成服务器202将文件发送给调度器204之前,集成服务器202根据文件的可发布文件类型来验证所述文件。如果文件无效,则服务返回指示验证错误的异常。调度器204确定哪个触发器订阅文件并且将文件的副本放置于每个订阅者的触发序列214中,将在本地发布的文件保存在触发文件存储器502(例如,位于磁盘上的触发文档存储器)中,或者调度器204在没有文件订阅者的情形下,将文件丢弃(S702)。
调度器204从服务器线程池中获取线程,从触发队列214中调取文件,并且对照触发条件评估文件(S703)。如果触发器配置为仅一次处理,集成服务器102首先判断该文件是否为已由触发器处理过的文件的副本。只有当该文件是新的时,集成服务器102才会继续处理该文件。如果该文件符合触发条件,则调度器204执行与该触发条件相关联的触发服务502/504/506(S704)。如果该文件不符合触发条件,则集成服务器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在处理本地发布的保证型文件前关机,则集成服务器可以在其重启时从触发文档存储器502恢复该文件。所述集成服务器在其重启时不能恢复易失性文件。如果服务生成关于错误的审计数据并在审计日志中包含输入通道的副本,则可以在一段时间后使用监视器重新调用触发服务。
文件符合触发器中一个以上的条件是可能的。然而,集成服务器102可以只运行与第一符合条件关联的服务。触发器的处理模式决定了集成服务器102是串行处理触发队列中的文件还是并行处理。串行处理时,集成服务器102按照文件放入触发队列的顺序依次处理所述文件;并行处理时,集成服务器102每次尽可能处理多个文件,但不必按照与所述文件放入触发队列的顺序相同的顺序进行处理。也能够配置触发器中止并在重试失败发生的情形下在一段时间过后重试。重试失败发生在集成服务器102进行了最大次数的重新尝试并且触发服务仍由于异常而失败时。
现在给出用于建立发布及订阅方案的步骤的概述。简而言之,在发布侧,用户创建待发布的文件的可发布文件类型和将处理由发布侧发布的接收文件的服务。在订阅侧,用户创建发布文件的服务以及将接收文件与处理该文件的服务相关联的触发器。
更为具体而言,建立集成方案的第一步包括:定义问题以及确定如何利用发布-订阅模型解决该问题。当设计方案时,确定将需要发布/订阅的文件会是有益的。这个信息在创建可发布文件类型时是有益的。同样地,确定文件应怎样发布也是有益的。这个信息在创建发布文件的服务时是有益的。最后,确定如何处理文件会是有益的。这个信息在创建处理文件的服务时是有益的。
在第二步中,确定产品配置。在一些实施例中,对于开发环境反映产品环境(production environment)是可取的。应考虑的问题包括:是否所有的文件发布和订阅将在单个集成服务器上执行或者是否将使用多个集成服务器;如果使用多个集成服务器,则是否配置为集成服务器群;以及产品环境中是否使用代理。在第三步中,创建可发布文件类型。即,在待发布的文件确定后,在发布侧创建可发布文件类型。
在第四步中,使可发布文件类型可用。为创建处理文件的服务以及订阅文件的触发器。订阅侧通常需要定义待发布文件的可发布文件类型。当开发环境为单个集成服务器时,发布侧和订阅侧在单个集成服务器上进行开发。因此,一般而言,不需要使可发布文件类型对其他开发者可用的操作。对于发布侧的可发布文件类型创建后,该可发布文件类型立即可供订阅侧使用。然而,当开发环境包括带有代理的多个集成服务器时,发布侧和订阅侧均在被代理连接的单独的集成服务器上进行开发。因而,当创建可发布文件类型时,相应的代理文件类型在代理上自动创建。可以使可发布文件类型对其他开发者可用。这可以通过根据代理文件类型创建可发布文件类型成为可能。通过使用包复制将可发布文件类型分发给使用其他集成服务器来工作的开发者也成为可能。在此情形下,当其他开发者接收到包,他们可安装包,而后通过从代理中调用文件类型来同步该文件类型。
在第五步中,在发布侧,创建向代理发布文件或者同一集成服务器上本地发布文件的服务。在第六步中,在订阅侧,创建将处理收到文件的服务。当创建服务处理文件时,文件索引可以包含在发布文件的可发布类型的输入标记中。这样,就可以利用定义在可发布文件类型中的域来引用文件中的数据。
在第七步中,定义触发器。在订阅侧,创建触发器以将一个或者多个可发布文件类型与处理发布文件的服务相关联。为了将可发布文件类型与该服务相关联,触发条件被创建,所述触发条件识别订阅的可发布文件类型和当该类型文件到达时要调用的服务。可以通过增加过滤器进一步精炼该条件,所述过滤器为发布文件的内容指定标准。当触发器被保存时,集成服务器利用该触发器中的条件定义可发布文件类型的订阅。下文将进一步对触发器的设计和配置进行详细说明。
在第八步中,同步可发布文件类型。当集成方案中包括代理时,每个可发布文件类型在代理上都有相应的代理文件类型。图8示出了发布-订阅模型集成方案的两侧,其中可发布文件类型与相同的代理文件类型相关联。在发布-订阅集成方案中,发布侧和订阅侧使用相同的可发布文件类型802。当向代理程序106发布文件804时,发布侧使用可发布文件类型802识别正发布的文件的类型。订阅侧参考触发程序808中的可发布文件类型802以指出正订阅的文件的类型。为了集成方案正确地运行,发布侧和订阅侧的可发布文件类型802应该参考同一代理文件类型806。
下面描述了基于开发环境如何使可发布文件类型与同一代理文件类型对应。在开发环境包含一个集成服务器的情形下,当集成方案用于产品时,发布侧和订阅侧可能在通过代理连接的不同的集成服务器上。因此,有必要同步以创建与可发布文件类型相关联的代理文件类型。相应地,在发布侧,在同步期间,可发布文件类型被推送到代理以在代理上创建代理文件类型。可使用包复制以建立和分发包含可发布文件类型的包。在订阅侧,安装由发布侧创建的包含可发布文件类型的包。在同步期间,从代理中调出文件类型以更新可发布文件类型。
在开发环境包括带有代理的多个集成服务器的情形下,由于开发期间使用了代理,发布侧和订阅侧上的可发布文件类型可能已经对应到同一代理文件类型。尽管如此,全部文件类型的简单同步可以用来确保可发布文件类型与代理文件类型的同步。
现在给出关于触发器的更详细的描述。触发器创建对可发布文件类型的订阅并指定如何处理那些可发布文件类型的实例。当触发器被创建时,一个或者多个条件也被创建。条件将一个或者多个可发布文件类型与单一的服务相关联。可发布文件类型充当触发器的订阅件。服务是处理件。当触发器接收到其订阅的文件时,集成服务器就通过调用所述条件中指定的服务来处理该文件。
创建触发器是包括下述基本阶段的过程。在集成服务器上创建新的触发器。在这个阶段,该新的触发程序创建集成服务器上,其中开发和测试将被执行。一个或多个触发条件被创建。在这个阶段,将可发布文件类型与服务相关联,创建将应用于收到文件的过滤器,并选择连接类型。设置触发器属性。在这个阶段中,设定配置触发程序的运行环境的参数,如触发队列容量、文件处理模式、触发服务重试限度以及仅一次处理。测试和调试可能在触发器上进行。
处理由触发器接收的文件的服务叫触发服务。条件通常指定单一的触发服务。在触发器被激活之前,该触发服务必须已经存在于相同的集成服务器上。另外,触发服务的输入标记需要具有可发布文件类型的文件索引。该文件索引的名称是可发布文件类型的全域名。可发布文件类型的全域名可以遵照规定格式,如:folder.subfolder:PublishableDocumentTypeName。
当触发器被保存时,集成服务器可评估该触发器,特别是评估触发器中的条件,以确定该触发器有效。如果集成服务器确定触发器或者触发器中的条件是无效的,则将向用户展示错误消息,并将该触发器禁用。在某些实施方式中,当下述的各个情况为真时,触发器可认为是有效的:触发器包含至少一个条件;触发器中每个条件指定唯一的名称;触发器的每个条件指定服务;触发器中每个条件指定一个或者多个可发布文件类型;如果触发器中多个条件指定同一可发布文件类型,则在每个条件中,应用于可发布文件类型的过滤器是相同的;应用于可发布文件类型的过滤器的语法是正确的;以及该触发器包含不超过一个连接条件。
一般而言,触发器只能订阅可发布文件类型。多个触发器(以及触发器内的多个条件)能参考同一可发布文件类型。运行时,对于每个触发器,对于符合可发布文件类型标准的第一条件,集成服务器调用指定的服务。
图9是表示现有的消息传输层900的示例性框图,所述消息传输层900在上述系统的多个组件之间、某两个组件之间提供通信以及与上述系统的多个组件通信。在某些示例性实施方式中,消息传输层900的某些方面可作为单独实现既位于集成服务器(或者集成服务器实例)上又位于代理上,和/或位于任意的提供者上。在消息传输层900中提供作为自定义实现的应用服务902。任选地,消息提供者(例如,以专有模式或JMS模式运行的代理、另外的JMS提供者)可不同于访问所述提供者的客户端。在这种实例中,所述客户端可以为例如嵌入所述提供者的客户端库的集成服务器或者自定义程序或应用程序。所述客户端库可包括包含在消息传输API层(例如,代理API和/或JMS API)中的Java归档(Java Archive,JAR)文件。在某些示例性实施方式中,所述消息传输层的高层(例如,JMS适配器层和触发器层,通过应用代码)可位于集成服务器上。
触发器层904激活上述代理触发服务,所述代理触发服务与上述集成服务器代理触发器子系统和设备906交互。这些层启用对专有(例如,代理)消息API层908的访问。可通过JAR文件分布和/或实现代理API。因此,消息传输层900的右侧提供了一套丰富的可通过专有消息传输层与集成服务器或集成服务器的实例910交互以提供应用集成解决方案的功能。
如上所述,为了在开放的基于标准的消息传输协议上提供互用性和/或通信,可通过使用适配器来启用适当的消息传输协议(例如,JMS消息传输)。因此,在消息传输层900的左侧,提供了JMS适配器层912以与JMSAPI层914连接,使用由JDK提供的标准JMS接口可实现所述连接。因此,消息传输层900的左侧提供了可通过与JMS关联的层与集成服务器实例910交互以提供应用集成解决方案的彼此协作的和/或开放的消息传输功能。
从图9容易认识到,现有的消息传输层900不包括用于消息传输协议左侧的触发器子系统。因此,基于JMS适配器的应用缺乏代理触发器子系统的扩展能力。照这样,使用现有的消息传输层900的用户被迫在互用性、基于标准的消息传输和处理方面与更强大的专有消息传输和处理的另一方面之间选择。
在某些示例性实施方式中实现的对上述问题的解决方案包括将JMS作为与专有消息传输协议的对等物完全嵌入到集成服务器触发器子系统中,从而使全部的或大体全部的现有性能可由JMS实现。
相应的,图10是表示根据一种示例性实施方式的消息传输层1000的示意性框图。与图9所示的消息传输层一样,某些示例性实施方式的消息传输层1000可作为单独实现既位于集成服务器(或者如图10所示的集成服务器实例)上又位于代理上(图10未示出)。消息传输层1000可位于任意的提供者上,例如为支持JMS消息传输的提供者。然而,通过使用某些示例性实施方式的消息传输层1000,可在不使用提供给集成服务器的特定适配器的情况下实现JMS消息传输。此外,在某些示例性实施方式中,这种消息传输层1000可使避免产生JMS触发器自身的任何变化成为可能(例如,可使用常规格式的标准JMS消息),和/或所述消息传输层1000可在某些示例性实施例中降低对在应用服务层次上自定义编程和/或执行的需要。
从图10能认识到,消息传输层1000的左侧实质上反映了它的右侧。具体而言,JMS触发器层1004用作代理触发器层904的对应层,并且JMS子系统1006(其帮助代替JMS适配器912)是代理触发器子系统906的对应层。仍然提供了相同的JMS消息传输API层914和专有代理消息传输API层908。然而,包含在消息传输协议1000中的触发器子系统1002提供了共用的触发器设备。在单独的触发器子系统上提供作为增值层的触发器子系统1002,从而使平行子系统能够运行。
某些示例性实施方式通过采用如下具体方法中的一种或一种以上实现触发器子系统1002。第一,扩展集成服务器触发器的命名空间实体并使其适用于包括针对JMS消息传输的属性和设置。所述触发器命名空间是命名对象,所述命名对象实现关于等待消息的时长和当接收消息时如何处理所述消息的配置。例如,可将所述触发器命名空间组织成文件夹的命名层次。例如,下述结构表示有关业务应用在收到定购文件时如何处理该定购文件的指令:bussapp.processpo:handlineincomingprocessingorder。可将所述命名空间组织成树状,并且可在节点处进行配置。
第二,扩展集成服务器触发器的管理功能并使其适用于包括针对JMS的选项(例如,可选的节流方案)。所述管理功能在调节进入系统的消息流方面有用(例如,减少系统淹没的可能性)。可以全面地执行管理和/或在触发器层次上执行管理。示例性的功能包括调节/中止触发器接受和/或处理。
[134]第三,扩展集成服务器触发器的集群模式并使其适用于JMS。应当理解,所述集群(例如,基于负载均衡提供的集群)可用于增加可扩展性和生存能力。在某些示例性实施方式中,相同的触发器可在一个或一个以上集成服务器上使用。
第四,扩展集成服务器触发器的会合机制并使其适用于JMS。在会合操作中,如果程序需要同时处理全部文件则触发器等待多个文件。第五,扩展集成服务器触发器的排序服务执行机制并使其适用于JMS。如果包含多个文件,则所述排序服务执行机制保证按顺序处理。第六,提供综合事务处理的实现用于JMS消息的触发器子系统。事务处理包括将处理顺序与事务绑定。随后,所述处理顺序作为整个事务结束(committed),或者如果所述事务中的任何操作失败,则修改可被回滚(rolled back)。
同样,在某些示例性实施方式中,在代理被用作JMS提供者自身的情形下提供某些自定义扩展。例如,可实现单级(例如,JNDI)结构、多服务器故障转移(例如,共享的客户端模式)和/或串流大消息处理。实际上,由某些示例性实施方式提供的配置功能简化了现有技术的自定义编程及实现要求。例如,与需要实际编程相比,某些示例性实施方式提供了基于菜单的配置工具。
用于消息处理的标准流程包括预处理、处理和后处理。预处理包括消息取回和评估,这可包括例如集群支持、重复检测、事务开始等。处理包括服务调度,这可包括例如本地过滤器处理、应用并行性、会合和排序服务执行评估等。后处理包括消息确认,这可包括例如错误和重试操作、事务结束等。
这些配置技术提供了某些例证性优点。例如,因为通过触发器进行消息操作和处理,所以内置于集成服务器的功能是可以调节的。因为某些示例性实施方式的触发器结构是独一无二的,所以基于JMS的传递机制也是独一无二的。此外,尽管传统的代理通过具有降低了互用性的专有协议提供丰富的功能集以及JMS消息传输提供了减少了功能的互用性,但是某些示例性实施方式同时提供了通过基于标准的消息传输协议的互用性和强大的功能集。因此,为消息传输层提供扩展降低了(有时消除了)对消息传输层的自定义开发、适配器的需要,和/或降低了(以及有时消除了)对采用这种自定义消息传输层和/或适配器的应用的需要。照这样,有可能避免经常在非标准方式下完成的反复重新编码,取而代之的是以基于配置的方式提供相同或更强的功能。
因此,一般性优势包括:充分加强的、完全可互用的基于标准(例如,基于JMS)的消息处理,除了使用专有代理之外或者代替专有代理使用替换的(例如,JMS)消息传输提供者的能力,以及与一个以上消息传输提供者(例如,一个代理和/或任意数量的JMS提供者)同时连接的能力。由触发器子系统提供的具体的示例性优势可包括如下:在某些示例性的实现中,针对一个或一个以上JMS目标(例如,队列或主题)的监听者的声明配置(declarative configuration)、用于服务器负载控制的配置的并行性(例如,每个触发器的线程和/或全部线程是可用的)、全部和每个触发器的运行管理(例如,监视、中止和恢复、容量管理等)、一次且仅有一次的处理(例如,保证处理、重复检测、错误重试等)、自动的瞬态错误处理和恢复(例如,对于暂时不可用的后端应用程序)、用于消息处理的集群支持(例如,提供可扩展性、可用性和故障转移功能)、用于大文件的基于数据流的消息传输(例如,以减少内存过载)、基于在业务流程模式执行中有用的会合(例如或、与、异或)的附条件的消息处理、用于排序消息的排序服务执行、集成的本地和XA事务支持、用于消息传输的客户端排队(例如,以支持JMS提供者的不可用)、本地过滤器(例如,超过有限的JMS选择器的能力)等。
如上所述,在又一些示例性实施方式中使用某些示例性实施方式的基于标准的触发器来传输其他消息类型是可取的,所述其他消息类型是基于触发器的基于标准的传输。这种方法潜在地实现了基于标准的触发器协议和实际的消息协议两者的益处。某些示例性实施方式实现了用于这种技术的基于标准的和配置驱动的方法。在某些示例性实施方式中,根据将基于标准的触发器与消息协议链接或绑定的绑定规范来实施针对这种技术的基于标准的和配置驱动的方法。如上所述,对于所述消息传输的一种有利的协议是SOAP,以及对于所述触发器的一种有利的协议是JMS消息传输。因此,可将基于JMS 1.0的SOAP(SOAO over JMS 1.0)规范用作绑定规范来实施某些示例性实施方式以便于实现根据SOAP over JMS的消息传输。
一般而言,绑定规范规定了基于标准的消息的必要的头信息,并且还规定了如何翻译提供配置信息的文件,所述配置信息用于调用关注的一个或一个以上特定服务。在某些示例性实施方式中,所述绑定规范可提供关于如下的信息:如何翻译在网络服务定义语言(Web Service DefinitionLanguage,WSDL)文件中的具体的JMS绑定。所述头信息可包括JMS触发器头信息,除此之外还包括关于如何翻译网络服务定义语言(WSDL)文件的信息。JMS消息的头信息可包括:例如,指示请求消息是否持续的属性、如果存在请求消息则该请求消息的寿命(例如,以毫秒为单位)、与请求消息关联的JMS优先级、如果存在响应消息则该该响应消息应该发往的目的地名称、和/或类似内容。
应当理解,尽管本文所述的某些示例性实施方式是涉及为处理基于JMS传输的SOAP消息提供支持,还应当理解可以是使用其他协议代替这些例证说明的协议或者除了使用这些例证性协议之外还使用其他协议。例如,可连同基于任何合适的基于标准的触发器协议的传输来进行传输的任何合适的消息协议一起来实施本文所述的某些示例性实施方式。换句话说,可使用任何第一基于标准的消息传输协议来创建触发器,因而可在所述第一基于标准的消息传输层上传输根据任何第二基于标准的消息传输协议的消息信封。
某些示例性实施方式提供配置驱动的方法来接收所述消息并将所述消息传输到集成服务器的网络服务堆栈中,同时还实现某些增值服务。由某些示例性实施方式提供的所述增值服务可包括:例如,网络服务的仅一次处理(exactly-once processing)和访问控制等。
为了接收基于JMS的SOAP消息,某些示例性实施方式实施一种新型JMS触发器,本文中称之为SOAP-JMS触发器。某些示例性实施方式的SOAP-JMS触发器扩展了上述JMS触发器的功能。然而,从下面的详细描述将变得明朗化,某些示例性实施方式还具有如下能力:接收来自JMS提供者SOAP消息、从收到的消息中提取SOAP信封以及将所述消息传输到集成服务器的网络服务堆栈。在某些示例性实施方式中,所述SOAP-JMS触发器还可负责当执行请求-应答操作时返回响应SOAP消息,以及如果/当发生异常时返回故障消息。
一般而言,某些示例性实施方式在设计期间可根据预先定义的网络服务定义语言(WSDL)文件创建网络服务描述符(Web Service Descriptor,WSD)以及设置网络服务(WS)终端(endpoint)。另外,某些示例性实施方式在运行期间通常可指明要发送的数据、调用适当的指定所述要发送的数据的网络服务连接器、根据所述数据创建SOAP消息、创建任意必要的JMS头、创建具有适当的SOAP-JMS头和SOAP消息作为消息体的JMS消息、与通过JMS子系统的相关SOAP消息一起发送实际运行时消息。如果请求确认,则在上述所列运行活动之后,可产生恰当的确认SOAP消息、可产生任意必要的JMS头、可创建JMS触发器中的具有恰当的SOAP-JMS头和SOAP消息作为消息体的返回确认消息、并且可返回所述确认消息。
现在将提供这些示例性处理方法以及实现所述方法的系统的更为详细的描述。网络服务为用于创建开放的分布式系统的模块。网络服务是被打包成单个单元以及被发布到供其他软件程序使用的网络的功能的集成。WSD1204通常在网络服务连接器1202运行之前创建。WSD为定义IS项中的网络服务的IS元件,并且一般而言,WSD聚集有关网络服务的大量相关信息。在这点上,WSD可包括消息格式、数据类型、传输协议和应该用在用户(请求者)和提供者之间的传输序列化格式。WSD还可指定一个或一个以上终端(例如,一个或一个以上网络地址或JMS目的地,网络服务可在所述网络地址或JMS目标被调用)。实际上,WSD表示管理与所述服务交互的结构的协议。因此,在某些示例性实施方式中,WSD存在于所述模型的发送(用户)端和接收(生产者)端。
提供者WSD定义了设于集成服务器上的网络服务,即:“提供”给外部用户的服务。提供者WSD将一个或一个以上IS服务显示为操作,所述操作可作为单个网络服务发布给注册处。外部用户可通过所述注册处访问所述网络服务并且远程调用所述IS服务。可根据一个或一个以上IS服务和/或WSDL文件创建提供者WSD,并且将所述提供者WSD设计为允许所述IS服务作为基于网络的网络服务被调用。提供者WSD包括创建用于IS网络服务的WSDL文件所需的全部数据,以及在运行期间用来处理请求和响应所需的数据。当提供者WSD是根据现有的WSDL文件或者根据UDDI注册处获取的网络服务创建时,这个过程通常被称为是“WSDL第一”。提供者WSD可作为网络服务发布给UDDI注册处(或者其他可公开访问的服务器),所述网络服务可被外部用户远程调用。应当理解,在某些示例性实施方式中,网络服务提供者也可将WSDL文件和支持文档直接分发给网络服务用户。
可根据UDDI注册处中的网络服务或WSDL文件创建用户WSD,并且将所述用户WSD设计为允许集成服务器调用所述网络服务作为IS流程服务的一部分。所述用户WSD可包括来自定义所述网络服务的WSDL文件的全部数据,除此之外还包括某些集成服务器在运行期间的特性所需的数据。因此,用户WSD定义了外部网络服务,允许集成服务器为所述网络服务中的每个操作创建网络服务连接器。当用户WSD被创建时,一个或一个以上网络服务连接器也可被创建。
网络服务连接器是具有与包含在WSDL文件中的网络服务操作的输入消息和输出消息对应的输入标记和输出标记的流程服务,其中所述网络服务连接器根据所述WSDL文件创建。如上所述,当创建用户WSD时可创建网络服务连接器,例如,根据网络服务创建。可调用所述网络服务连接器来运行远程网络服务操作。因此,网络服务连接器1202实质上是集成服务器102的“可执行的服务”。
总的来说,WSD和网络服务连接器可用于实现如下功能:
●将一种或一种以上IS服务显示为网络服务的操作。
●定义并配置网络服务,包括:例如,用来产生用于提供者网络服务描述符的WSDL文件的设置,以及用来处理SOAP请求或响应所需的任何信息。
●提供URL以获取用于IS提供者网络服务的WSDL文件。
●为提供者和用户网络服务两者定义一种或一种以上的别名以与动态终端寻址一起使用。对于提供者WSD,所述别名可用来当产生WSDL时构成所述网络服务的终端地址。对于用户WSD,所述别名用在如下运行期间:调用网络服务连接器以确定所述网络服务的实际终端地址和/或提供用户证书与请求一起使用。
●使用文件-文字型、RPC-文字型和RPC-编码型SOAP消息。
●在网络服务调用中使用SOAP 1.1协议或者SOAP 1.2协议。
●(为提供者和用户网络服务器两者)定义和处理SOAP头以及处理SOAP故障
●保证提供者和用户网络服务的安全。
如上所述,WSD一般根据WSDL文件创建,例如,通过向导(wizard)。反之,所述WSDL文件提供配置信息用于调用关注的特定网络服务。在这点上,WSDL文件是描述通过网络可访问的网络服务的文件(例如,可扩展标记语言(Extensible Markup Language,XML)文件)。用于网络服务的WSDL文件可包括网络服务用户需要发送数据到网络服务、调用所述网络服务以及从所述网络服务接收数据的信息。例如,用于网络服务的WSDL文件可描述如下:
●网络服务执行的逻辑。
●网络服务的地址。
●用于访问网络服务的方法,例如,网络服务用户调用网络服务和接收响应所使用的协议。
●网络服务用户应提供给网络服务的输入参数以及所述网络服务返回的输出参数。
下表描述了WSDL文件中的基本元素:
元素 | 描述 |
<definitions> | 包含描述网络服务的元素 |
<types> | 包含描述由网络服务接收和发送的数据的类型定义。<types>元素可引用整个XML架构以及可包含单个类型定义、复杂类型定义和元素声明。所述类型定义和元素声明有助为网络服务定义输入参数和输出参数。WSDL可将XML架构用作WSDL的固有类型系统。 |
<message> | 指定由网络服务接收和发送的数据。<message>元素可描述一 |
组输入参数或一组输出参数。每个<message>元素可包含一个或一个以上<part>元素。<part>元素可将数据块与命名和类型定义或者元素声明相关联。由<part>元素引用的所述类型定义或元素声明可以在<types>元素中定义、声明或引用。 | |
<operation> | 指定由网络服务接收和发送的消息。在<operation>元素中,<input>元素可识别如下消息:所述消息的部分信息对网络服务指定输入参数,而<output>元素可识别如下消息:所述消息的部分信息指定网络服务的输出参数。实质上,所述operation为网络服务指定标记。<operation>元素可在<portType>元素中声明。 |
元素 | 描述 |
<portType> | 定义命名的操作组。<portType>元素可将端口类型名称与一组操作关联。<portType>元素可包含多个操作。 |
<binding> | 指定协议和消息格式以用来访问端口类型中的操作。每个<binding>元素可为端口类型指定一种协议;然而,WSDL文件可为单个端口类型定义一个以上绑定。WSDL文件可包括对于每个协议的一个<binding>元素,所述<binding>元素支持所述协议。 |
<port> | 将绑定与网络地址关联。总的来说,所述绑定和网络地址可指定如何调用网络服务。每个端口可为绑定指定一个网络地址;然而,可为单个网络服务定义多个端口。可在<service>元素中定义端口元素。 |
<service> | 可用于调用网络服务的端口组。<service>元素可包含许多端口。 |
<port>元素中的<address>元素可指定网络服务的位置。更具体地,<address>元素可携带为服务指定网络地址的位置属性,或者携带指定JMS目的地的URI。WSDL产生者可使用协议、传输、主机、端口和当产生WSDL文件时所提供的指令信息来创建用于所述属性的值。
对于指定SOAP文件-文字、SOAP RPC-文字或者SOAP RPC-编码作为协议的WSDL文件,在<address>元素中的位置属性可以是或者包括如下示例性的格式:
transport://host:port/soap/directive
在<operation>元素中的位置属性可以在集成服务器上指定服务的完全合格的路径名称并且可以是或者包括如下示例性的格式:
folder.subfolder/service
WSDL命名空间有助于区分涉及WSDL的元素和元素的属性以及在其他命名空间中定义的属性。下述命名空间的前缀可在WSDL文件中找到并且可在产生时插入到WSDL文件中:mime、wsdl、webM、soap、http、xsd、tns等。
WS终端主要提供额外的配置信息以及可视为为WSD提供全局配置信息。例如,在提供者一侧,终端可存储用于产生网络服务的终端索引的配置(例如,JMS URI)和/或WSDL中的JMS绑定。在这点上,示例性的JMS提供者网络服务终端别名可包括下述参数中的一些或全部和/或其他的JMS参数:
参数名称 | 描述 |
SOAP-JMS触发器名称 | 下拉列表包含有效的SOAP-JMS触发器名称 |
传输模式 | 下拉列表包含空值、“PERSISTENT”和“NONPERSISTENT”。其中缺省为空值。 |
生存时间 | 数字(长数字)表示消息的寿命(以毫秒为单位)。如果生存时间指定为零,则设置终止为零以表明消息没有终止。其中缺省为空值。 |
优先级 | 数字(0到9)表示消息的优先级,其中0为最低优先级,9为最高优先级。其中缺省为空值。 |
对名称的应答 | JMS目的地的名称或查询名称,在所述JMS目的地应该发送对消息的应答。 |
对类型的应答 | 下拉列表包含空值、“Queue”和“Topic”。其中缺省为空值。注意:这个参数仅可在执行MEP In-Out时应用。 |
包括的连接 | 选择框指示连接工厂(connection factory)名称。 |
JMS URI中的工厂名称 | 包含在产生的WSDL中。缺省为已选(例如,真)。 |
JMS URI中包括的JNDI参数 | 选择框指示JNDI参数,可包含在产生的WSDL中。缺省为未选(例如,假)。 |
在某些示例性实施方式中的JMS提供者网络服务终端的别名可包含足够的信息以产生有效的JMS URI。JMS URI可用于指明javax.jms.Destination对象并且优选地提供关于使用目标对象的方式的额外信息。JMS URI可包括方案名称(例如,“jms”)、变量标识符、“jms-dest”部分等。三个已确认的变量为“jndi”、“queue”和“topic”。“jms-dest”部分以由特定变量确定的方式识别JMS目标对象。在JMS URI中还可包括其他参数,例如JNDI参数和JMS消息头设置。用于JMS URI的一种示例性的格式为:
“jms:”jms-variant”:”jms-dest[“?”param*(“&”param)]
可用于构建JMS URI的信息可以从SOAP-JMS触发器获取。SOAP-JMS触发器可包含目的地的名称(或者查询名称),以及可包含用来与JMS提供者连接的JMS连接别名的名称。
如果JMS连接器别名使用JNDI与JMS提供者连接,那么JMS URI的变量标识部分可以是“jndi”。如果JMS连接别名使用本地网络方法API与JMS提供者连接,那么JMS URI的变量标识部分可以是“queue”或“topic”或类似字符。JMS URI的“jms-dest”部分,以及“queue”和“topic”之间的区别,可由SOAP-JMS触发器参数的目的地名称和目的地类型构成。
根据Java消息服务1.0规范的URI方案,JMS URI还可包括用来与JMS提供者连接的参数。
●如果JMS连接别名使用JNDI与JMS提供者连接并且在JMS URI标记中包括的连接工厂名称被设置为真,那么所述连接工厂名称可包括在JMS URI中。
●如果JMS连接别名使用JNDI与JMS提供者连接并且在JMS URI标记中包括的JNDI参数被设置为真,那么JNDI参数可包括在JMS URI中。一种可能的例外是JNDI安全参数可以不包括在JMS URI中。安全参数可使用WS终端别名来设置。
●如果JMS连接别名使用本地网络方法API与JMS提供者连接,那么JMS连接别名的名称可与参数名称wm-jmsconnectionalias或类似名称一起包括在JMS URI中。
●任选地,例如传输模式、生存时间、优先级、对名称的答复等其他JMS消息头特性也可包括在JMS URI中。
当使用WSD来产生包括JMS传输的WSDL时,JMS提供者网络服务终端别名的配置可用于产生在WSDL中的JMS绑定。在这点上,soapjms命名空间可添加至定义,WSDL文件的端口地址可等于JMS URI字符串,包括连接工厂名称和JNDI参数,但是不包括消息头参数。所述消息头参数可包括在绑定部分中,并且所述消息头参数可包括soapjms前缀。绑定传输可以为JMS传输命名空间。
在某些示例性实施方式中,在用户侧的WS终端允许用户指定集成服务器应该如何发送SOAP over JMS消息以及将所述消息发送到哪里。JMS用户网络服务终端别名可包括:例如,JNDI提供者别名、JMS连接别名和/或类似别名。JNDI提供者别名可指定JNDI设置(例如,初始上下文工厂和URL)。JMS连接别名可包括JNDI配置和/或用于直接访问JMS提供者的本地配置。
发送SOAP over JMS消息所需的全部信息有可能包括在由网络服务提供者提供的WSDL文件中。在这种情况下,可不需要JMS用户网络服务终端别名。然而,某些信息可从WSDL文件中排除也是可能的。例如,WSDL文件可包括JNDI连接工厂名称,但是不包括JNDI参数。然而,根据SOAPover JMS 1.0规范,需要包括在WSDL中的唯一必需的JMS信息是查询变量和目的地名称。在某些示例性实施方式中,终端可帮助解决这个矛盾。
参考图11,图11是根据一种示例性实施方式的结合专有的和各种基于标准的触发器的示例性应用集成系统100’的示意图。图11的应用集成系统100’与图1的应用集成系统100类似。实际上,实现图1的应用集成系统100之外实现图11的应用集成系统100’或者代替图1的应用集成系统100实现图11的应用集成系统100’。简言之,图11的应用集成系统100’包括SOAP/JMS客户端1102。SOAP/JMS客户端1102与代理106’连接,并且SOAP/JMS客户端1102可以是第三方或其他客户端。在某些示例性实施方式中代理106’可以是JMS提供者(例如,JMS 1.1提供者)。
图12至图14详细说明了应用集成系统100’的代理106’和集成服务器102’之间的交互。具体而言,图12是图示了根据一种示例性实施方式的消息生产者的“in-only”消息交换模式行为的框图。图12所示的框图类似于图3所示的框图,然而,图3中的发布服务202由图12中的网络服务连接器1202代替。如上所述,图12的示例性实施方式中,网络服务连接器1202为消息交换模式(MEP)“in-only”类型连接器。因此,在图12的例子中,消息是单向发送的。
简言之,在某些示例性实施方式中,图12的网络服务连接器1202可根据网络服务描述符(WSD)1204生成。反之,在某些示例性实施方式中,WSD 1204可根据预定义的或其他的网络服务定义语言(WSDL)文件1208生成,和/或根据现有服务(未示出)生成。网络服务终端1206也可被指定并可能对WSD1204有影响,并且因此对网络服务连接器1202可能有影响。对于提供者侧和用户侧,根据某些示例性实施方式,这些组件的详细说明在上面的描述中已经提供。
图12所示的实际流程与图3所示的以及连同图3一起描述的的流程大致相同。因此,与上述类似,设置于集成服务器102’的网络服务连接器1202发送文件到调度器204(或当在适配器监视的资源上发生事件时,适配器通知发布文件)(S1201)。在集成服务器102’把文件发送到调度器204之前,先根据可发布文件类型验证该文件。如果该文件是无效的,网络服务连接器1202可返回一个指示验证错误的异常。如果调度器204检测到代理106’在本例中不可用时,则可保存该文件(S1202)。例如,如果文件是保证型的,调度器204把文件传送到出站文档存储器302(例如,位于磁盘上)。如果文件是易失型的,调度器204丢弃该文件并且发布服务202抛出异常。集成服务器102执行发布服务连接器1202中的下一步。
当集成服务器102’重新建立到代理106’的连接时,集成服务器102’从连接池206中获得一个单独的连接208(S1203)。集成服务器102’自动地把文件从出站文档存储器302发送到代理106’(S1204)。为了更快地清空出站文档存储器302,集成服务器102’可以成批地发送文件而不是一次一个。例如,应当理解,集成服务器102’可使用单独的连接208以清空出站文档存储器302以维持发布顺序。
代理106’检查文件的存储类型,确认其是保证型的,把该文件存储在内存210中和磁盘212上(S1205)。代理106’把文件路由至订阅者(S1206)。如果文件是已发布的(例如,广播),则代理106’识别订阅者,并放置所述文件的副本在每个订阅者的客户端队列中(例如,第一客户端列队214a和第二客户端列队214b)。如果文件已被传递,代理106’将该文件放在传送请求中指定的客户端列队中(例如,第一客户端列队214a和第二客户端列队214b二者或者其中之一)。如果该文件没有订阅者,代理106’将向网路服务连接器1202返回确认,然后丢弃该文件。然而,如果文件存在死信订阅(deadletter subscription),则代理106’将把文件存放在包含死信订阅的队列中(例如,第一客户端列队214a和第二客户端列队214b二者或其中之一)。文件将保留在代理106’的队列中(例如,第一客户端列队214a和第二客户端列队214b二者或其中之一),直到被订阅客户端拾起。如果文件的生存时间消逝,则代理106’就丢弃该文件。文件的生存时间是可以预先设定的,例如,由用户预设。如果文件是保证型的,则代理106’向调度器204返回确认以指示该文件的成功接收和存储(S1206)。调度器204把连接器208返回到连接池206。代理106’向集成服务器102’返回确认以指示该保证型文件的成功接收和存储(S1207)。集成服务器102’可从出站文档存储器302上移除该文件。
如果希望当代理106’不可用时不用把已发布的文件放在出站文档存储器302中,取而代之的是,可以配置集成服务器102’使其抛出异常。在重新建立到代理106’的连接之后,集成服务器102’可以把所有新发布的文件(例如,保证型的或易失型的)发送到出站文档存储器302直至出站存储器302耗尽。这样使得集成服务器102’可以保持发布顺序。在集成服务器102’清空出站文档存储器302后,集成服务器102’可直接向代理106’重新发布文件。
如果集成服务器102’进行了预定次数的尝试(如3、4、5等)以从出站文档存储器302向代理106’传送文件并且全部尝试都失败了,则审计子系统可以记录该文件并指定其为“过多尝试(TOO MANY TRIES)”的状态。如果在集成服务器102’发布文件时发生瞬态错误,则审计子系统可以记录该文件并指定其为“失败(FAILED)”状态。配置可发布文件类型和集成服务器102’以使集成服务器在文件被发布时不用验证该文件是可能的。监视器被用来发现并重新提交带有“过多尝试”或“失败”状态的文件。
图13是图示了根据一种示例性实施方式的消息生产者的“输入-输出(in-out)”或者“请求-应答(request-reply)”消息交互模式行为的框图。图13所示的框图类似于图4所示的框图,除了图4中的发布服务202由图13中的服务连接器1202代替之外。因此,图13所示的框图还类似于图12所示的框图,除了图13的示例性实施方式中的网络服务连接器为MEP“输入-输出”型连接器。因此,在图13的例子中,消息是双向发送的。
图13所示的实际流程与图4所示的以及连同图4一起描述的流程大致相同。因此,与上述类似,网络服务连接器1202发送消息(例如,请求)到调度器204(S1301)。集成服务器102’用唯一的标识符组成消息信封上的头,所述标识符用来使应答消息与该请求匹配。网络服务连接器1202进入等待状态。在网络服务连接器1202收到来自订阅者的应答或者超过了等待时间之前,该网络服务服务连接器1202不会重新执行。集成服务器102’一发布消息就开始跟踪所述等待时间。
调度器204从连接池206中获得连接(S1302)。连接池206是连接208的备用集,集成服务器102’使用连接208向代理106’发布消息。为了向代理106’发布请求消息,集成服务器102’使用该请求/回应客户端的连接208。如果代理106’不可用,调度器204可以将消息路由到出站消息存储器302中,例如,如上所述。调度器204向代理106’发送消息(S1303)。
代理106’检查消息的存储类型以确定怎样存储该消息(S1304)。例如,如果消息是易失型的,代理106’将该消息存储在内存210中。如果消息是保证型的,代理106’将消息存储在内存210中和磁盘212上。代理106’把消息路由指订阅者(S1305)。如果消息已发布(例如,广播),则代理106’识别订阅者并放置消息副本在每个订阅者的客户端列队中(例如,第一客户端列队214a和第二客户端列队214b)。如果消息已经传送,则代理106’放置该消息到该传送请求中指定的客户端队列(例如,第一客户端列队214a和第二客户端列队214b二者或其中之一)。如果该消息没有订阅者,则代理106’可向发布者202返回确认,然后丢弃该消息。然而,如果消息存在死信订阅(deadletter subscription),则代理106’把消息存放在包含死信订阅的队列中(例如,第一客户端列队214a和第二客户端列队214b二者或其中之一)。消息保留在代理106’的队列中(例如,第一客户端列队214a和第二客户端列队214b二者或其中之一)直到被订阅者客户端拾起。如果消息的生存时间消逝,则代理106’就丢弃该消息。所述生存时间可以预先设定,例如,由用户设定。如果消息是保证型的,则代理106将向调度器204返回确认以指示该消息的成功接收和存储(S1306)。调度器204返回连接208到连接池206。
订阅者重新获取和处理所述消息(S1307)。订阅者使用服务(未示出)来组成和发布应答消息。该服务自动采用与请求消息信封头域中使用的相同值组成应答消息信封的头域。该服务自动指定请求客户端作为该应答消息的接收者。一个或多个订阅者向代理106’发送应答消息(S1308)。代理106’存储所述应答消息,例如,存储在内存210中。代理106’把该应答消息放在发起该请求的集成服务器102’的请求/应答客户端队列402中。
发起所述请求的集成服务器102’从连接池206中获得请求/应答客户端,并从代理106’中获取应答消息(S1309)。集成服务器102’使用应答消息的的头值以使该应答与原始请求进行匹配(S1310)。集成服务器102’把应答消息放置在等待服务404的通道中(S1311)。等待服务重新开始执行。
当请求应答消息时,可生成SOAP文件并封装在JMS消息中,其中SOAP-JMS头作为JMS消息的消息体。换言之,可获得JMS头信息,并且JMS触发器的数据信封可包括适当生成的SOAP格式的消息。
所有的应答消息可能被视为或者可能不被视为易失型文件,这取决于消息头的值。易失型文件可能存储在内存210中,并且如果应答消息所在的资源关闭或者如果在应答消息时失去连接208,则该易失型文件可能会丢失。
如果等待时间在服务收到应答之前消逝,则集成服务器102’可能结束该请求,而该服务则可能返回一个指示请求超时的空消息。集成服务器102’执行流程服务中的下一步骤。如果在流程服务恢复执行后应答消息到达,则集成服务器102’可拒绝该消息并创建日志记录消息,该日志记录消息说明该消息是因为没有线程等待文件而被拒绝。
某些示例性实施方式的优点在于他们允许同步通信(例如,请求)超过异步技术。例如,某些示例性实施方式的优点在于他们允许多个用户等待同一消息。消息可发布一次,但该消息指定多个目的地。因此,例如,在某些示例性实施方式中消息可以以负载平衡方式接收,从而使后端发送者的精确位置基本上无关紧要。某些示例性实施方式的优点还在于允许上述功能和/或其他功能可以开放的和可扩展的配置驱动方式执行。
图14是图示了根据一种示例性实施方式的消息用户行为的图。实质上,图14显示了运行时消息从代理106′到集成服务器102’中的JMS子系统204′的用户1402的路径、通过网络服务堆栈1408对合适的IS服务1410的调用、以及任选的确认消息的返回。下面将更详细地描述这一流程。然而,应当指出的是,图14中所示元件与流程表现了上述“标准”JMS触发器(例如与图5有关的)和某些示例性实施方式中SOAP-JMS触发器之间的最大区别。参见图10,图10是表示示例性消息传输层1000的示意性框图,其中对于具有与之相关的基于标准的消息的基于标准的触发器,不需要提供除了用于JMS触发器的触发层1004之外的单独的触发器层。因此,在某些实施例中,SOAP-JMS触发器可以通过用于JMS触发器的触发层1004路由合适格式的消息。触发器子系统1002的共用触发器设备也可用作SOAP-JMS触发器。然而,如在下文中更为详细的说明,某些示例性实施方式可使用相同的或单独的子系统204′以分离其JMS头的SOAP消息以提取该SOAP消息信封,而不是使用IS-JMS子系统1006传送所述消息给JMS消息传输API层914或专有消息传输API层908。所提取的SOAP消息信封随后可传送给网络服务堆栈1408,以便,合适的IS服务最后调用,例如:通过SOAP消息传给SOAP堆栈。
JMS子系统204′用户1401(有时也称为触发器)使用来自上下文池1404中的上下文1406以获取消息。上下文1406封装javax.jms.Session和javax.jmsMessageConsumer。因此,上下文1406维持触发器的状态并且包括关于怎样从特定提供者获取消息的信息。有利地,使来自上下文池1404的上下文1406使某些示例性实施方式能避免严格的JMS要求,所述JMS要求当任一个JMS消息被确认时所有的JMS消息也必须被确认。换言之,在某些示例性实施方式中使用来自上下文池1404的上下文1406使消息能够一次一个或一次多个地被确认、一次所有被确认,或者甚至根本不确认。应当理解,在某些示例性实施方式中,所述用户或触发器可能是多线程工作。
用户或触发器1402从上下文池1404(S1401)中获取合适的上下文1406,例如,基于包含在关于下述内容的上下文信息中的信息。所述内容包括:例如,消息的类型、如何从提供者获取消息等。上下文1406随后可用于从消息提供者获取消息(例如,从JMS消息提供者)(S1402)。
当消息已获取(S1402之后),用户或触发器1402会从该消息中提取基础消息信封(例如,来自所述JMS消息的SOAP信封),并将所提取的消息传送至网络服务堆栈1408(S1403)。换句话说,在某些示例性实施实施方式中网络服务堆栈1408只收到SOAP信封而不接收JMS消息,而后者先前已被用户1402移除。因此,在某些示例性实施方式中,网络服务堆栈1408配置为根据所述SOAP信封调用合适的IS服务1410而不考虑JMS触发器。网络服务堆栈1408随后负责从多个可能的IS服务1410中调用合适的目标IS服务1410(S1404)。因此,尽管前面所述的“标准”JMS触发器负责路由消息至目标服务,但是某些示例性实施方式的SOAP-JMS触发器依靠网络服务堆栈1408来路由所述消息至合适的目标IS服务1410。这是两种类型触发器如何运行之间在操作上的重要的区别,这也需要在如本文所示和描述的基础系统结构上进行重要改进。
当调用的目标IS服务1410根据所提取的消息完成处理时,用户1402可以向提供者确认所述处理(S1405)。例如,当调用的目标IS服务1410根据提取的SOAP信封完成处理时,用户1402可向JMS提供者确认所述处理。在某些示例性实施方式中,可在触发器配置中指定特定的确认模式。例如,使用JMS,所述确认模式可以是客户端确认模式(例如,通过设置合适的触发器配置域为“客户端(client)”或类似值)、自动确认模式(例如,通过设置合适的触发器配置域为“自动(auto)”或类似值)或成批确认模式(例如,通过设置合适的触发器配置域为“重复确认(dups ok)”或类似值)。
当SOAP over JMS消息连同某些示例性实施方式一起实现时,可重新获取JMS参数。例如,当所述JMSTransportSender收到要发送消息的请求时,它也可能是传输的消息上下文。发送消息的第一步可以是从所述消息上下文中提取所述JMS参数。因此,JMSTransportSender可在MessageContext的TransportURI参数中寻找JMS URI。如果没有找到任何参数,则JMSTransportSender可能考虑MessageContext.getTo().getAddress()。如果没有找到所述JMS URI,则JMSTransportSender可能考虑OutTransportlnfo参数以找到JMSTransportSenderlnfo类。所述JMSTransportSenderInfo类可能包含连接参数以及需要创建和发送SOAP-JMS消息的消息头参数。
如上文所指出,发送消息时,JMS消息体的上下文可能包括SOAP负载作为JMS BytesMessage或TextMessage。在某些示例性实施方式中,在消息没有附加信息的情况下,该JMS消息体可能包含XML SOAP消息的适当的编码字节,或什么也不包含。在这种情况下,上下文类型(Content-type)将是“text/xml”(适用于SOAP1.1)或“application/soap+xml”(适用于SOAP 1.2)。在消息有附加信息的情况下,该JMS消息体可能包含multiparMIME消息。在字节流中首先遇见的第一件事可能是第一部分的开始的MIME boundary。所述消息连同“multipart/related”的上下文类型一起被使用XOP[SOAPIIMTOM](SOAP 11-MTOM]进行编码。
如上文所提到的,在某些示例性实施方式中发送消息的时候,所述JMS消息头的上下文和属性可以根据SOAP over JMS1.0规范的2.7和2.8节中给出的规则来组装,据此,通过引用将SOAP over JMS1.0规范的2.7和2.8节的全部内容并入本文。当然,其他基于标准的绑定规范也可以连同某些示例性实施方式一起使用。
应当理解本文中所使用的术语:系统、子系统、服务、可编程逻辑电路等可作为任意软件、硬件、固件等的组合实现。
虽然本发明已经结合目前被认为是最实用和优选的实施方式的内容被阐述,然而应当理解的是,本发明并不限于所公开的实施方式,而相反,本发明意在覆盖包含在所附权利要求的精神实质范围内的各种各样的改进和等同布局。
Claims (25)
1.一种应用集成系统,该系统配置为通过消息代理交换消息,包括:
消息用户,该消息用户配置为根据从上下文池获取的上下文通过所述消息代理的客户端队列接收来自消息生产者的运行时消息,所述消息用户配置为使用传输协议并且具有与所述传输协议有关的消息信封,根据第二消息传输协议设置所述消息信封的格式,运行时触发器进一步配置为从所述运行时消息中提取所述消息信封;以及
网络服务堆栈,该网络服务堆栈配置为接收由所述运行时触发器提取的所述消息信封,并且进一步配置为根据包括在所述消息信封中的指令从多个可能的服务中调用合适的服务。
2.如权利要求1所述的系统,其中所述运行时触发器进一步配置为在所述至少一个合适的服务被调用之后通过经由所述消息代理发送确认消息到所述消息生产者来确认收到所述运行时消息。
3.如权利要求2所述的系统,其中多个确认消息成批地发送到所述消息生产者。
4.如权利要求1所述的系统,其中所述运行时触发器为JMS触发器。
5.如权利要求1所述的系统,其中所述第二消息传输协议为SOAP。
6.如权利要求1所述的系统,其中所述运行时触发器配置为通过JMS传输协议接收SOAP消息信封。
7.如权利要求1所述的系统,其中所述运行时触发器还包括头信息,所述头信息包含:响应信息应该发往的目的地名称、与所述运行时触发器有关的优先级、关于所述运行时触发器是否持续的指示、和/或所述运行时触发器的生命期。
8.如权利要求1所述的系统,其中在设计期间将所述运行时触发器与网络服务描述符(WSD)关联。
9.如权利要求8所述的系统,其中所述WSD根据网络服务定义语言(WSDL)文件建立。
10.如权利要求9所述的系统,其中所述运行时触发器包括关于如何翻译所述WSDL文件的头部信息。
11.一种应用集成系统,该系统被配置为通过消息代理交换消息,包括:
网络服务连接器,该网络服务连接器配置为使用运行时触发器通过产生运行时消息来调用远程网络服务,所述运行时消息通过消息代理的客户端队列传递到消息用户,所述运行时消息通过传输协议发送且具有与所述传输协议有关的消息信封,根据第二消息传输协议确定所述消息信封的格式,以及
调度器,该调度器配置为接收来自所述网络服务连接器的运行时消息并且通过从连接池中获取的连接将所述运行时消息发送到所述代理,其中:
所述网络服务连接器是根据网络服务描述符(WSD)产生,
所述WSD指定所述运行时消息信封的至少一种格式和目的地,以及
所述消息代理配置为将任何接收到的运行时消息放入用于所述消息用户的客户端队列。
12.如权利要求11所述的系统,其中所述消息代理进一步配置为通过所述连接池中其中一个连接将从所述消息用户接收到的确认消息返回给所述网络服务连接器。
13.如权利要求11所述的系统,其中所述运行时触发器为JMS触发器。
14.如权利要求11所述的系统,其中所述第二消息传输协议为SOAP。
15.如权利要求11所述的系统,其中所述网络服务连接器配置为通过JMS传输协议传输SOAP消息信封。
16.如权利要求11所述的系统,其中所述WSD根据预定义的网络服务定义语言(WSDL)文件产生。
17.如权利要求16所述的系统,其中所述WSDL文件描述了通过网络可访问的网络服务,包括所述网络服务连接器需要发送数据到所述网络服务,调用所述网络服务以及从所述网络服务接收数据的信息。
18.如权利要求11所述的系统,其中所述网络服务连接器是至少部分基于一个或一个以上网络服务终端产生的。
19.一种应用集成系统,该系统配置为通过消息代理交换信息,包括:
网络服务连接器,该网络服务连接器被配置为使用运行时触发器通过产生运行时消息来调用远程网络服务,所述运行时消息将通过所述消息代理的客户端队列传递到消息用户,所述运行时消息通过传输协议发送并且具有与所述传输协议相关的消息信封,根据第二消息传输协议确定所述消息信封的格式,以及
调度器,该调度器配置为接收来自所述网络服务连接器的所述运行时消息并且通过从连接池中获取的连接将所述运行时消息发送到所述代理,其中:
所述消息用户配置为根据从上下文池中获取的上下文接收来自所述产生者的所述运行时消息,
运行时触发器配置为从所述运行时消息中提取所述消息信封,以及
网络服务堆栈配置为接收由所述运行时触发器提取的消息信封,并且进一步配置为根据包括在所述消息信封中的指令从多个可能的服务中调用合适的服务,
所述网络服务连接器在设计期间根据网络服务描述符(WSD)产生,所述WSD指定所述运行时消息信封的至少一种格式和目的地,以及
所述消息代理配置为将任何接收到的运行时消息放入所述消息用户的客户端队列中。
20.如权利要求19所述的系统,其中所述消息信封为SOAP消息信封,所述运行时触发器为JMS触发器,并且所述SOAP消息信封通过JMS传输发送至所述JMS触发器或从所述JMS触发器发送。
21.在应用集成系统中,一种消息传输方法包括:
提供被配置为从消息生产者传递消息到消息用户的消息代理;
启用网络服务连接器,该网络服务连接器配置为使用运行时触发器通过产生运行时消息来调用远程网络服务与所述消息用户通信,其中所述运行时消息将通过所述消息代理的客户端队列传递到所述消息用户;
通过连接到所述网络服务连接器的调度器使用从连接池获取的连接发送所述运行时消息至所述消息代理,所述运行时消息通过传输协议发送并且具有与所述传输协议相关的消息信封,根据第二消息传输协议确定所述消息信封的格式;
在所述消息用户,根据从上下文池获取的上下文通过所述代理接收来自所述产生者的运行时消息;
从所述运行时消息中提取所述消息信封;
将所述消息信封从所述消息用户传递到网络服务栈;以及
通过所述网络服务栈根据包括在所述消息信封中的指令从多个可操作地连接到所述网络服务堆栈的可能的服务中调用合适的服务,
其中所述消息代理配置为将任何接收到的运行时消息放入到用于所述消息用户的客户端队列中。
22.如权利要求21所述的方法,其中所述消息信封为SOAP消息信封,所述运行时触发器为JMS触发器,并且所述SOAP消息信封通过JMS传输发送至所述JMS触发器或从所述JMS触发器发送。
23.如权利要求21所述的方法,还包括在设计期间根据网络服务描述符(WSD)产生所述网络服务连接器,所述WSD指定所述运行时消息信封的至少一种格式以及目的地。
24.如权利要求23所述的方法,还包括在设计期间从预定义的网络服务定义语言(WSDL)文件和/或一个或一个以上网络服务端点中产生所述WSD,
其中所述WSDL文件描述了通过网络可获取的网络服务,包括所述网络服务连接器需要发送数据到所述网络服务,调用所述网络服务以及从所述网络服务中接收数据的信息。
25.如权利要求21所述的方法,还包括在调用所述至少一个合适的服务和/或由所述至少一个合适的服务处理之后通过所述消息代理确认收到所述被传输的消息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/385,104 | 2009-03-31 | ||
US12/385,104 US8301687B2 (en) | 2009-03-31 | 2009-03-31 | Systems and/or methods for standards-based messaging |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101854351A true CN101854351A (zh) | 2010-10-06 |
Family
ID=41354005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010155132A Pending CN101854351A (zh) | 2009-03-31 | 2010-03-29 | 用于基于标准的消息传输的系统和/或方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8301687B2 (zh) |
EP (1) | EP2237516B1 (zh) |
CN (1) | CN101854351A (zh) |
AT (1) | ATE507654T1 (zh) |
DE (1) | DE602009001187D1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019866A (zh) * | 2012-10-24 | 2013-04-03 | 北京京东世纪贸易有限公司 | 基于消息队列的分布式方法和系统 |
WO2013082944A1 (zh) * | 2011-12-06 | 2013-06-13 | 中兴通讯股份有限公司 | 一种多媒体信息发布方法、系统及装置 |
CN103646572A (zh) * | 2013-11-08 | 2014-03-19 | 赤壁市巨龙科教高技术有限公司 | 带小组合作学习功能的课堂系统 |
CN104980450A (zh) * | 2014-04-01 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 一种消息传递方法和系统及消息中间件 |
CN106257890A (zh) * | 2015-06-22 | 2016-12-28 | 帕洛阿尔托研究中心公司 | 传输堆栈名称方案和身份管理 |
CN106293957A (zh) * | 2015-06-24 | 2017-01-04 | 帕洛阿尔托研究中心公司 | 内容中心网络中的灵活命令和控制 |
CN108781230A (zh) * | 2016-03-15 | 2018-11-09 | 西门子股份公司 | 用于数据交换的方法和设备 |
CN111221659A (zh) * | 2018-11-23 | 2020-06-02 | 北京图森智途科技有限公司 | 一种多机器人操作系统环境的订阅性能追踪系统 |
CN113519141A (zh) * | 2019-02-08 | 2021-10-19 | 微软技术许可有限责任公司 | 用于数据完整性的模型驱动的服务回滚机制 |
CN113518128A (zh) * | 2015-07-23 | 2021-10-19 | 微软技术许可有限责任公司 | 跨平台的协调动作 |
CN114090279A (zh) * | 2021-10-11 | 2022-02-25 | 惠州市德赛西威汽车电子股份有限公司 | 一种基于pps以构建两个独立系统间消息通道的方法 |
CN115718462A (zh) * | 2022-07-19 | 2023-02-28 | 北京蓝晶微生物科技有限公司 | 一种用于设备集成与自动化控制的方法及装置 |
CN113518128B (zh) * | 2015-07-23 | 2024-10-22 | 微软技术许可有限责任公司 | 跨平台的协调动作 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8453163B2 (en) * | 2009-06-29 | 2013-05-28 | Software Ag Usa, Inc. | Systems and/or methods for policy-based JMS broker clustering |
US20110067036A1 (en) * | 2009-09-16 | 2011-03-17 | International Business Machines Corporation | Method for Determining Relationship Data Associated with Application Programs |
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 |
US9785482B2 (en) * | 2010-09-17 | 2017-10-10 | Oracle International Corporation | System and method for extending a web service environment to support scalable asynchronous clients |
US9542448B2 (en) | 2010-11-03 | 2017-01-10 | Software Ag | Systems and/or methods for tailoring event processing in accordance with boundary conditions |
US8635342B2 (en) * | 2011-03-15 | 2014-01-21 | Sap Ag | Transaction message collector |
US8756613B2 (en) * | 2011-09-23 | 2014-06-17 | International Business Machines Corporation | Scalable, parallel processing of messages while enforcing custom sequencing criteria |
US9276998B2 (en) * | 2011-10-06 | 2016-03-01 | International Business Machines Corporation | Transfer of files with arrays of strings in soap messages |
US9009683B2 (en) | 2012-03-28 | 2015-04-14 | Software Ag | Systems and/or methods for testing client reactions to simulated disruptions |
US10354212B2 (en) | 2013-02-07 | 2019-07-16 | Software Ag | Techniques for business process driven service oriented architecture (SOA) governance |
US10455041B2 (en) * | 2014-02-20 | 2019-10-22 | Rovio Entertainment | Stateful service with partial replication |
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 |
CN105635230B (zh) * | 2014-11-07 | 2018-12-25 | 阿里巴巴集团控股有限公司 | 一种消息传输方法及装置 |
US10079865B2 (en) | 2014-12-18 | 2018-09-18 | Software AG USA Inc. | Method and system for an ontology based request/reply service |
US9602455B2 (en) | 2015-08-07 | 2017-03-21 | Machine Zone, Inc. | Scalable, real-time messaging system |
US10333879B2 (en) | 2015-08-07 | 2019-06-25 | Satori Worldwide, Llc | Scalable, real-time messaging system |
US9407585B1 (en) | 2015-08-07 | 2016-08-02 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9385976B1 (en) | 2015-10-09 | 2016-07-05 | Machine Zone, Inc. | Systems and methods for storing message data |
US9319365B1 (en) | 2015-10-09 | 2016-04-19 | Machine Zone, Inc. | Systems and methods for storing and transferring message data |
US9397973B1 (en) | 2015-10-16 | 2016-07-19 | Machine Zone, Inc. | Systems and methods for transferring message data |
US10200330B2 (en) | 2015-12-10 | 2019-02-05 | Facebook, Inc. | Techniques for ephemeral messaging with a message queue |
US9906480B2 (en) * | 2015-12-10 | 2018-02-27 | Facebook, Inc. | Techniques for ephemeral messaging with legacy clients |
US9602450B1 (en) | 2016-05-16 | 2017-03-21 | Machine Zone, Inc. | Maintaining persistence of a messaging system |
US10404647B2 (en) * | 2016-06-07 | 2019-09-03 | Satori Worldwide, Llc | Message compression in scalable messaging system |
US9608928B1 (en) | 2016-07-06 | 2017-03-28 | Machine Zone, Inc. | Multiple-speed message channel of messaging system |
US9967203B2 (en) | 2016-08-08 | 2018-05-08 | Satori Worldwide, Llc | Access control for message channels in a messaging system |
US10216782B2 (en) * | 2016-08-12 | 2019-02-26 | Sap Se | Processing of updates in a database system using different scenarios |
US10374986B2 (en) | 2016-08-23 | 2019-08-06 | Satori Worldwide, Llc | Scalable, real-time messaging system |
US10305981B2 (en) | 2016-08-31 | 2019-05-28 | Satori Worldwide, Llc | Data replication in scalable messaging system |
US9667681B1 (en) | 2016-09-23 | 2017-05-30 | Machine Zone, Inc. | Systems and methods for providing messages to multiple subscribers |
US10270726B2 (en) | 2017-02-24 | 2019-04-23 | Satori Worldwide, Llc | Selective distribution of messages in a scalable, real-time messaging system |
US10447623B2 (en) | 2017-02-24 | 2019-10-15 | Satori Worldwide, Llc | Data storage systems and methods using a real-time messaging system |
US10187278B2 (en) | 2017-02-24 | 2019-01-22 | Satori Worldwide, Llc | Channel management in scalable messaging system |
US11070559B2 (en) * | 2017-08-23 | 2021-07-20 | Oracle International Corporation | System and method for supporting object-based security |
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 |
CN115118587B (zh) * | 2022-06-23 | 2024-10-18 | 北京字跳网络技术有限公司 | 一种创建连接器的方法及装置 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4777595A (en) * | 1982-05-07 | 1988-10-11 | Digital Equipment Corporation | Apparatus for transferring blocks of information from one node to a second node in a computer network |
US4556974A (en) * | 1983-10-07 | 1985-12-03 | Honeywell Inc. | Method for passing a token in a local-area network |
US4604686A (en) * | 1984-01-27 | 1986-08-05 | Martin Marietta Corporation | Associative data access method (ADAM) and its means of implementation |
US4725834A (en) * | 1984-02-27 | 1988-02-16 | American Telephone And Telegraph Company, At&T Bell Laboratories | Reliable broadcast protocol for a token passing bus network |
US4689786A (en) * | 1985-03-21 | 1987-08-25 | Apple Computer, Inc. | Local area network with self assigned address method |
US4649535A (en) * | 1985-05-13 | 1987-03-10 | General Electric Company | Method and apparatus for maintaining a dynamic logical ring in a token passing LAN |
US4682326A (en) * | 1985-11-27 | 1987-07-21 | General Electric Company | Method and apparatus for maintaining a dynamic logical ring in a token passing lan |
US4745598A (en) * | 1985-11-27 | 1988-05-17 | General Electric Company | Method and apparatus for maintaining a dynamic logical ring in a token passing LAN |
US4789982A (en) * | 1986-01-27 | 1988-12-06 | Codenoll Technology Corporation | Method for implementing a token passing ring network on a bus network |
NL8601712A (nl) * | 1986-07-01 | 1988-02-01 | Koninkl Philips Electronics Nv | Communicatienetwerk, in het bijzonder een telefoonnetwerk en datacommunicatienetwerk dat is samengesteld uit een verzameling van knooppuntseenheden, waarbij specifieke faciliteiten binnen naar keuze vastgestelde domeinen, volledig geintegreerd kunnen worden geboden. |
US4797881A (en) * | 1987-03-12 | 1989-01-10 | Sytek, Inc. | Bridge system for connecting networks |
DE3876617T2 (de) * | 1987-09-04 | 1993-04-08 | Digital Equipment Corp | Verbindungssteuerung in einem netzwerk fuer ein digitaldatenverarbeitungssystem, das mehrfache uebertragungsprotokolle unterstuetzt. |
US5109515A (en) * | 1987-09-28 | 1992-04-28 | At&T Bell Laboratories | User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services |
DE3803434A1 (de) * | 1988-02-05 | 1989-08-17 | Asea Brown Boveri | Verfahren und einrichtung zum ausbau eines geblaeses eines gasgekuehlten kernreaktors |
EP0331190B1 (en) * | 1988-03-04 | 1996-01-03 | Nec Corporation | Method for controlling address parameters for interconnecting LAN and ISDN |
US4975914A (en) | 1989-01-24 | 1990-12-04 | International Business Machines Corporation | Non-disruptive session recovery |
US5341477A (en) * | 1989-02-24 | 1994-08-23 | Digital Equipment Corporation | Broker for computer network server selection |
US5249293A (en) * | 1989-06-27 | 1993-09-28 | Digital Equipment Corporation | Computer network providing transparent operation on a compute server and associated method |
US5257369A (en) * | 1990-10-22 | 1993-10-26 | Skeen Marion D | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US5557798A (en) * | 1989-07-27 | 1996-09-17 | Tibco, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
WO1991005417A1 (en) | 1989-09-29 | 1991-04-18 | Peerlogic, Inc. | Pipes logical network |
US5265250A (en) * | 1990-03-29 | 1993-11-23 | At&T Bell Laboratories | Apparatus and methods for performing an application-defined operation on data as part of a system-defined operation on the data |
US5218697A (en) * | 1990-04-18 | 1993-06-08 | Microsoft Corporation | Method and system for networking computers having varying file architectures |
DE69130587T2 (de) * | 1990-05-10 | 1999-05-06 | Hewlett-Packard Co., Palo Alto, Calif. | System zum Integrieren von Anwenderprogrammen in eine heterogene Netzwerkumgebung |
AU630567B2 (en) * | 1990-07-31 | 1992-10-29 | Digital Equipment Corporation | System and method for emulating a window management environment having a uniform windowing interface |
US5280610A (en) * | 1990-08-14 | 1994-01-18 | Digital Equipment Corporation | Methods and apparatus for implementing data bases to provide object-oriented invocation of applications |
AU631749B2 (en) * | 1990-09-14 | 1992-12-03 | Digital Equipment Corporation | System and method for communication between windowing environments |
US5249290A (en) * | 1991-02-22 | 1993-09-28 | At&T Bell Laboratories | Method of and apparatus for operating a client/server computer network |
US5224098A (en) * | 1991-07-17 | 1993-06-29 | International Business Machines Corporation | Compensation for mismatched transport protocols in a data communications network |
BR9306654A (pt) * | 1992-07-01 | 1998-12-08 | Ericsson Telefon Ab L M | Processo e sistema para facilitar automaticamente a comunicação operativa entre primeiro e segundo componentes de um sistema de computador que usa uma pluralidade de protocolos de nível de aplicação e processo para criar e utilizar uma especificação de interface independente de linguagem com base em contruções definidas especializadas |
US5497463A (en) * | 1992-09-25 | 1996-03-05 | Bull Hn Information Systems Inc. | Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system |
US5329619A (en) * | 1992-10-30 | 1994-07-12 | Software Ag | Cooperative processing interface and communication broker for heterogeneous computing environments |
US7657450B2 (en) * | 2000-12-08 | 2010-02-02 | Microsoft Corporation | Reliable, secure and scalable infrastructure for event registration and propagation in a distributed enterprise |
WO2003015000A1 (en) * | 2001-08-08 | 2003-02-20 | Trivium Systems Inc. | Workflow engine for automating business processes in scalable multiprocessor computer platforms |
US20030187743A1 (en) * | 2002-02-07 | 2003-10-02 | International Business Machines Corp. | Method and system for process brokering and content integration for collaborative business process management |
US7287066B2 (en) | 2003-10-31 | 2007-10-23 | Sap Aktiengesellschaft | Publish-subscribe system having a reliability mechanism |
US7653008B2 (en) * | 2004-05-21 | 2010-01-26 | Bea Systems, Inc. | Dynamically configurable service oriented architecture |
JP2006072785A (ja) * | 2004-09-03 | 2006-03-16 | Hitachi Electronics Service Co Ltd | サービス利用のためのリクエストメッセージ制御方法、および、サービス提供システム |
GB0508624D0 (en) * | 2005-04-28 | 2005-06-08 | Ibm | Reverse proxy system and method |
US8136122B2 (en) * | 2007-08-30 | 2012-03-13 | Software Ag | Systems and/or methods for providing feature-rich proprietary and standards-based triggers via a trigger subsystem |
US20100161821A1 (en) * | 2008-12-18 | 2010-06-24 | Slamkovic Richard D | Midleware broker |
-
2009
- 2009-03-31 US US12/385,104 patent/US8301687B2/en active Active
- 2009-05-04 AT AT09159340T patent/ATE507654T1/de not_active IP Right Cessation
- 2009-05-04 EP EP09159340A patent/EP2237516B1/en active Active
- 2009-05-04 DE DE602009001187T patent/DE602009001187D1/de active Active
-
2010
- 2010-03-29 CN CN201010155132A patent/CN101854351A/zh active Pending
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013082944A1 (zh) * | 2011-12-06 | 2013-06-13 | 中兴通讯股份有限公司 | 一种多媒体信息发布方法、系统及装置 |
CN103019866A (zh) * | 2012-10-24 | 2013-04-03 | 北京京东世纪贸易有限公司 | 基于消息队列的分布式方法和系统 |
CN103019866B (zh) * | 2012-10-24 | 2017-02-08 | 北京京东世纪贸易有限公司 | 基于消息队列的分布式方法和系统 |
CN103646572A (zh) * | 2013-11-08 | 2014-03-19 | 赤壁市巨龙科教高技术有限公司 | 带小组合作学习功能的课堂系统 |
CN104980450A (zh) * | 2014-04-01 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 一种消息传递方法和系统及消息中间件 |
CN104980450B (zh) * | 2014-04-01 | 2018-08-24 | 阿里巴巴集团控股有限公司 | 一种消息传递方法和系统及消息处理设备 |
CN106257890B (zh) * | 2015-06-22 | 2021-03-12 | 思科技术公司 | 传输堆栈名称方案和身份管理 |
CN106257890A (zh) * | 2015-06-22 | 2016-12-28 | 帕洛阿尔托研究中心公司 | 传输堆栈名称方案和身份管理 |
CN106293957A (zh) * | 2015-06-24 | 2017-01-04 | 帕洛阿尔托研究中心公司 | 内容中心网络中的灵活命令和控制 |
CN106293957B (zh) * | 2015-06-24 | 2021-07-06 | 思科技术公司 | 内容中心网络中的灵活命令和控制 |
CN113518128A (zh) * | 2015-07-23 | 2021-10-19 | 微软技术许可有限责任公司 | 跨平台的协调动作 |
CN113518128B (zh) * | 2015-07-23 | 2024-10-22 | 微软技术许可有限责任公司 | 跨平台的协调动作 |
CN108781230A (zh) * | 2016-03-15 | 2018-11-09 | 西门子股份公司 | 用于数据交换的方法和设备 |
US11381648B2 (en) | 2016-03-15 | 2022-07-05 | Siemens Aktiengesellschaft | Method and apparatus for data interchange |
CN111221659A (zh) * | 2018-11-23 | 2020-06-02 | 北京图森智途科技有限公司 | 一种多机器人操作系统环境的订阅性能追踪系统 |
CN111221659B (zh) * | 2018-11-23 | 2023-10-03 | 北京图森智途科技有限公司 | 一种多机器人操作系统环境的订阅性能追踪系统 |
CN113519141A (zh) * | 2019-02-08 | 2021-10-19 | 微软技术许可有限责任公司 | 用于数据完整性的模型驱动的服务回滚机制 |
CN113519141B (zh) * | 2019-02-08 | 2024-05-31 | 微软技术许可有限责任公司 | 用于模型驱动的服务回滚的计算设备和方法 |
CN114090279A (zh) * | 2021-10-11 | 2022-02-25 | 惠州市德赛西威汽车电子股份有限公司 | 一种基于pps以构建两个独立系统间消息通道的方法 |
CN115718462A (zh) * | 2022-07-19 | 2023-02-28 | 北京蓝晶微生物科技有限公司 | 一种用于设备集成与自动化控制的方法及装置 |
CN115718462B (zh) * | 2022-07-19 | 2023-09-29 | 北京蓝晶微生物科技有限公司 | 一种用于设备集成与自动化控制的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20100251262A1 (en) | 2010-09-30 |
DE602009001187D1 (de) | 2011-06-09 |
EP2237516A1 (en) | 2010-10-06 |
ATE507654T1 (de) | 2011-05-15 |
US8301687B2 (en) | 2012-10-30 |
EP2237516B1 (en) | 2011-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101854351A (zh) | 用于基于标准的消息传输的系统和/或方法 | |
CN103944924B (zh) | 一种基于RESTful的泛在网发布订阅中间件模型的方法 | |
US7260623B2 (en) | Remote services system communication module | |
EP2031818B1 (en) | Systems and/or methods for providing feature-rich proprietary and standards-based triggers via a trigger subsystem | |
CN101194233B (zh) | 测试无线组件应用程序的系统和方法 | |
CN101945056A (zh) | 基于策略的jms中间件群的系统和/或方法 | |
CN101111832B (zh) | 用于向服务器提供客户机标识信息的系统和方法 | |
US7743250B2 (en) | Traffic manager for distributed computing environments | |
US8719780B2 (en) | Application server with a protocol-neutral programming model for developing telecommunications-based applications | |
US20030212738A1 (en) | Remote services system message system to support redundancy of data flow | |
CA2439373A1 (en) | Realization of presence management | |
CN101193077A (zh) | 用于订阅匹配的方法和系统 | |
US11095747B2 (en) | Method and apparatus for receiving response information in M2M system | |
KR101545626B1 (ko) | Dds-db 연동 시스템 | |
CN105791399B (zh) | 多中继互联网大数据推送方法和系统 | |
US7240109B2 (en) | Remote services system service module interface | |
CN1647482B (zh) | 用于网络通信管理的系统和方法 | |
EP3803616A1 (en) | Change notifications for object storage | |
EP1333643A2 (en) | Remote services system data delivery mechanism | |
US20200120464A1 (en) | Method for processing message in m2m system and device therefor | |
US11290860B2 (en) | Method for processing request message in M2M system and device therefor | |
US20030149771A1 (en) | Remote services system back-channel multicasting | |
KR101040891B1 (ko) | 무선 인터넷을 통한 복합 서비스 제공 시스템 | |
Pickens | Functional distribution of computer based messaging systems | |
CN117118993A (zh) | 业务互通的方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20101006 |