CN101854311A - 在web服务器上传递上下文信息的方法和装置 - Google Patents
在web服务器上传递上下文信息的方法和装置 Download PDFInfo
- Publication number
- CN101854311A CN101854311A CN200910133409A CN200910133409A CN101854311A CN 101854311 A CN101854311 A CN 101854311A CN 200910133409 A CN200910133409 A CN 200910133409A CN 200910133409 A CN200910133409 A CN 200910133409A CN 101854311 A CN101854311 A CN 101854311A
- Authority
- CN
- China
- Prior art keywords
- thread
- contextual information
- web server
- context
- unique identifier
- 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
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种在web服务器上传递上下文信息的方法,所述web服务器包括上下文池,所述方法包括:响应于web服务器接收到消息,从所述消息获取上下文信息,根据处理所述消息的线程生成唯一标识符,将所述上下文信息与所生成唯一标识符关联,以及在所述web服务器的上下文池中相关联地存储所述上下文信息及其关联的唯一标识符;响应于web服务器需要获取所述上下文信息,根据web服务器中当前执行的线程生成标识符,以及从所述上下文池中提取与所生成的标识符相匹配的上下文信息。
Description
技术领域
本发明涉及web服务调用消息中蕴含的上下文信息的传递问题,更具体地,涉及在web服务器上,传递该上下文信息的方法与装置。
背景技术
通常,在多个web服务(应用)之间通过消息传递来实现多个web服务之间的调用(请求)。术语“web服务”是指基于web应用的标准化方法,其中,一个web服务通过传递消息的方式调用另一个web服务。每个web服务可以部署于应用服务器(例如基于SOAP协议的SOAP服务器)中,通过应用服务器来执行每个web服务。
应用服务器通常具有以下功能:支持web服务的部署与卸载、监听网络消息、接收web服务调用/请求、解析请求消息、寻找请求所要调用的web服务程序、传递调用参数并执行web服务程序、获取web服务的处理结果并打包成标准的web服务响应消息、并向请求者发送消息。
图1是典型的用户与多个web服务之间交互的实例。在典型的实例中,如图1所示,用户首先通过本地的计算机应用输入用户ID和密码(PWD),以传递至web服务4。通过负责认证和授权服务的web服务4对用户输入的用户ID和PWD进行认证,并判断是否授权。web服务4在完成认证和授权的过程之后,向本地的计算机应用返回信息,如令牌T1。在用户通过认证和授权之后,用户可能需要获得论坛服务,例如访问web服务1。此时,用户将刚刚从web服务4接收的令牌T1传递给web服务1。在web服务1接收到令牌T1时,web服务1同样需要将令牌T1传递至web服务4,以验证令牌T1是否有效,并从web服务4获得判断结果,如虚线4所示。在用户需要获得激励服务时,例如访问web服务2时,需要从web服务1将令牌T1传递到web服务2。此时,同样地,在web服务2接收到令牌T1时,web服务2同样需要将令牌T1传递至web服务4,以验证令牌T1是否有效,并从web服务4获得判断结果,如虚线6所示。在用户需要获得核心银行服务时,例如访问web服务3时,同样需要从web服务2将令牌T1传递到web服务3。此时,同样地,在web服务3接收到令牌T1时,web服务3同样需要将令牌T1传递至web服务4,以验证令牌T1是否有效,并从web服务4获得判断结果,如虚线8所示。可以理解,还可以存在包含更多个web服务的情形。
在上述访问过程中,用户需要将令牌T1从web服务1传递到web服务2,从web服务2传递到web服务3,以及从web服务3传递到以后没有示出的其他web服务。除了令牌T1之外,在2个web服务之间传递的消息中还包括各种参数。
现有技术中,为了在web服务之间传递包含令牌T1和参数的消息,例如对于web服务2来说,在web服务2接收到消息时,需要进行解析处理,以获得令牌T1和参数,然后将令牌T1用于认证,将参数用于web服务2的服务处理。当web服务2向web服务3发送消息时,需要在web服务2的服务器内部重新组建一个包含令牌T1和参数的消息,此时需要重新获得关于令牌T1和参数的信息。参数可以从web服务2的实体来获得。对于令牌T1来说,目前仍旧是作为与参数同样地位传递的消息中获得,也就是说,与参数一样地,将令牌T1经过web服务2的处理,所述处理如下所示:
Service1.operate(T1,parameter1,parameter2)
如上所述仅介绍了传送令牌T1的情况,所以需要这样的接口操作可以解决令牌T1与参数共同传递的问题。假如还存在其他信息的情况,那么需要修改这样的接口函数,以包括其他信息。由此,引入这样的问题,每当需要传递一个新的非参数类型的信息时,都需要修改操作接口,以加入和处理新的要传递的信息。对于程序开发者而言,就需要不断修改接口,这无疑增加了他们的负担。因此,期望有一种方法,能够减少这样的负担,并同时保证各种信息的有效传递。
发明内容
为此,根据本发明一方面,提供一种在web服务器中传递上下文信息的方法,所述web服务器包括上下文池,所述方法包括:响应于web服务器接收到消息,从所述消息获取上下文信息,根据处理所述消息的线程生成唯一标识符,将所述上下文信息与所生成唯一标识符关联,在所述web服务器的上下文池中相关联地存储所述上下文信息及其关联的唯一标识符;响应于web服务器需要获取所述上下文信息,根据web服务器中当前执行的线程生成标识符,从所述上下文池中提取其关联的唯一标识符与所生成的标识符相匹配的上下文信息。
根据本发明另一方面,提供一种在web服务器上传递上下文信息的装置,所述web服务器包括上下文池,所述装置包括:从web服务器接收的消息获取上下文信息的模块;根据处理所述消息的线程生成唯一标识符的模块;将上下文信息与所生成的唯一标识符关联的模块;在所述web服务器的上下文池中相关联地存储上下文信息及其关联的唯一标识符的模块;根据所述web服务器中当前执行的线程生成标识符的模块;以及从上下文池中提取其关联的唯一标识符与所生成的标识符相匹配的上下文信息的模块。
本发明通过一种中心化的管理,将上下文信息放在一个中心化的存储区域中,通过例如与线程相关的标识符(例如线程ID)来存取,可以相对于服务来说以透明的方式上下文信息的共享。
本发明的其它方面将在随后的说明书中部分地阐述,并且将从说明书中部分地变得清楚,或者可通过本发明的实践学会。本发明的方面将通过在所附权利要求中特别指出的元素和组合实现和获得。可以理解,以上发明内容和以下具体实施方式都仅是示例性和说明性的,并没有限制如权利要求所主张的本发明。
附图说明
结合并构成本说明书一部分的附图示出本发明的实施例,并且结合说明部分一起用于解释本发明的原理。这里所示的实施例是目前优选的,然而,可以理解,本发明不限于所示的精确布置和手段,其中:
图1是典型的用户与多个web服务之间交互的示例;
图2是web服务之间的调用链的示图;
图3是根据本发明实施例的传递上下文信息的方法的流程图;
图4是根据本发明实施例的用于上下文信息存储的方法的流程图;
图5是根据本发明实施例的用于上下文信息提取的方法的流程图;
图6是根据本发明实施例的用于上下文信息维护的方法的流程图;以及
图7是根据本发明实施例的用于在web服务调用链中传递信息的装置的方框图。
具体实施方式
以下将说明根据本发明实施例的用于如图2的示例的对上下文信息共享的方法。
图2是web服务之间的调用链的示图。作为实例,在web服务领域中,通常使用SOAP(简单对象访问协议)协议进行消息传递。“SOAP”是一种轻量的、简单的、基于XML的协议,它被设计成在web上交换结构化的和固化的信息。SOAP可以与现存的许多互联网协议和格式结合使用,包括超文本传输协议(HTTP)、简单邮件传输协议(SMTP)等。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。当然除了SOAP协议环境之外还可以包括其他环境,例如REST等。在本发明的以下实施例中,将结合SOAP协议环境来具体描述,但是本发明不限于此。
图2中的服务A可以类似于图1中的web服务1(论坛服务),服务B可以类似于图1中的web服务2(激励服务),服务A和B均可以表示具有一定功能的服务,这种服务可以由程序开发者编写并预先存储。作为实例,尽管图2中的服务A位于例如服务器(例如SOAP服务器)中,但本发明不限于此,这里的web服务器是一种可以容纳、包含、承载服务A的服务器,例如基站、手持设备、主机和具有相应功能的其他服务器。
参见图2,在SOAP服务器中包括响应部件(a)和请求部件(b),在部件(a)和(b)中还可以存在多个用户代码扩展点(handler),如图2中的部件(a)和(b)中的小圆圈所示。其中,术语“用户代码扩展点”是指具有一定功能(例如用于解析、检索、提取、存储等)的、由程序开发者编写的并预先设置在SOAP服务器的关键点中的一段程序代码。在SOAP服务器中还包括上下文池,随后将对其进行详细描述。
以下结合图2描述本发明的具体执行过程,响应于SOAP服务器接收到消息(例如SOAP请求),公知地,首先在SOAP服务器中需要创建用于处理这个SOAP请求的线程。可以理解,SOAP请求首先从响应部件(a)进入SOAP服务器。然后,在响应部件(a)中(例如通过用户代码扩展点)解析SOAP请求,这里的解析过程可以采用本领域普通技术人员公知的任何解析方法。在SOAP请求中,包括信封部分(envelop)和消息体部分(body)。典型地,信封部分中存储例如性能、安全、可用性、可靠性、扩展性、认证、时间等信息,通常称为非功能性信息。这种非功能性信息可作为本发明中所称的上下文(context)信息。典型地,消息体部分中存储与要执行的功能相关的核心业务逻辑,通常称为功能性信息,如参数等。通过在响应部件(a)中执行的对SOAP请求的上述解析处理可获得上下文信息和消息体信息,也就是说,将信封部分与消息体部分分离。
在分离出信封和消息体之后,将所获得的消息体提供给服务A进行相应的操作,其具体的实现过程是本领域普通技术人员公知的,在此省略对其具体描述。由此,对于服务A来说,可以避免在不同的情况下对其编写不同的接口,例如在可扩展性、维护、变更、监控等方面带来很多便利。此外,在获取上下文信息时,还可优选地通过程序开发者已经预先编写的用户代码扩展点根据当前执行线程获得唯一标识符,其用于唯一标识上下文信息。根据本发明的一方面,唯一标识符可以采用在SOAP服务器中执行当前任务的当前线程ID。然后,优选地通过程序开发者已经预先编写的用户代码扩展点建立上下文信息与当前线程ID之间的关联关系,并将上下文信息存储在上下文池中。本领域普通技术人员可以理解,除了通过用户代码扩展点之外,还可以通过其他方式来实现以上各个步骤,例如特定线程、特定应用等。
在服务A执行的过程中,如果服务A调用的一个程序(例如存根程序B,并且如果存根程序B需要访问服务B,则在SOAP服务器中的请求部件(b)中需要从上下文池提取上下文信息。在需要提取时,优选地通过程序开发者已经预先编写的用户代码扩展点获取当前执行线程的线程ID,并根据当前线程ID从上下文池提取其关联的唯一标识符与当前线程ID匹配的上下文信息。由此,SOAP服务器通过所获得的上下文信息以及从存根程序B传来的功能性信息构成新的SOAP请求,以传递至服务B。同理,在服务B中也可以执行以上类似的过程,以调用下一个服务,由此形成多个服务之间的调用链条。
根据本发明的以上实施例,描述了从响应于SOAP服务器接收到SOAP请求时存储上下文信息到响应于SOAP服务器需要获取上下文信息时提取上下文信息的过程,由此实现在属于2个不同域的部件(a)和(b)之间实现对上下文信息的共享,当然这些过程都是在当前的SOAP服务器中执行的。当从一个SOAP服务器发送SOAP请求到下一个SOAP服务器时,在下一个SOAP服务器也可以执行类似的操作,由此形成多个服务调用链关系,如上所述。因此,通过本发明的方法,可以将上下文信息在多个SOAP服务器之间有效传递,并且对于每个SOAP服务器中的SOAP服务来说,完全不需要知道与其功能无关的信息,这可以理解成“透明的”。
此外,根据本发明的实施例,在部件(a)中存储具有关联关系的上下文信息之后,可以在部件(b)中根据需求提取上下文信息。本发明不限于此,还可以在部件(a)中根据需求提取上下文信息,甚至可以在服务A的执行过程期间根据需求提取上下文信息,这取决于上下文池的访问权限,即只要SOAP服务器中所包括的上下文池可以被部件(a)和部件(b)、服务A本身访问,就可以从上下文池中提取上下文信息。
在以上的实施例中,描述了从消息中获取上下文信息,将上下文信息与唯一标识符关联并存储在上下文池中,以及从上下文池提取上下文信息的过程。可以理解,在将上下文信息存储在上下文池中之后,尽管对其进行提取,但是却不一定会消除。
优选地,如果处理当前接收的SOAP请求的当前线程执行的整个过程结束而退出SOAP服务器,则可以消除在上下文池中存储的当前上下文信息,从而节省空间。当然,附加地或可选地,还可以采用定期清理的方式来消除上下文池中冗余的上下文信息,随后将对其进行描述。
如上所述,术语“上下文池”是具有一定存储空间的可以被SOAP服务器所访问的存储实体,可以理解,这种存储实体可以通过多种方式来实现,例如物理存储器、数据库、缓存、和具有适当存储功能的其他方式。
如上所述,通过上下文池实现一种对上下文信息的中心化管理,将上下文信息放在一个中心化的存储区域中,并优选地通过线程ID来存取,从而可以相对于服务来说以透明的方式上下文信息的共享,也就是说,通过本发明的方法,在有效传递上下文信息的同时,服务器中的服务完全不需要知道是怎么处理和传递上下文的,而只需要执行其自身专有的功能操作。
此外,尽管在本发明的以上实施例中描述了采用线程ID作为唯一标识符和标识符的实例,当然还可以通过其他方式作为唯一标识符和标识符,随后将进行描述。尽管在本发明的以上实施例中描述了在部件(b)中获取上下文信息的实例,当然还可以在其他需要的时候获取,随后将进行描述。尽管在本发明的以上实施例中描述了SOAP协议的实例,当然还可以采用其他协议,例如REST等,同样,本发明还可以用在除了web服务环境之外的其他环境中。
以下,将结合图3、4和5分别说明在web服务调用链中传递信息的方法,以及上下文信息的存储和提取的方法。
图3是根据本发明实施例的传递上下文信息的方法的流程图。相互之间调用的web服务位于相同或不同的服务器中,例如SOAP服务器中,其中每个SOAP服务器都具有其能够访问的上下文池。
响应于SOAP服务器接收到SOAP请求,在步骤301,从SOAP请求获取上下文信息,例如通过预先编写的用户代码扩展点对SOAP请求进行解析而获得其中的上下文信息。公知地,在获取上下文信息之前,在SOAP服务器中已经创建了用于执行该消息的线程。在步骤302,根据由SOAP服务器当前所创建的线程生成唯一标识符,按照一个实施例,唯一标识符采用当前线程的线程ID。应注意,这里的唯一标识符是用来唯一标识上下文信息的标识符,还可以采用其它标识符。在步骤303,在建立上下文信息与当前线程的线程ID之间的关联关系。随后,在步骤304,在SOAP服务器的上下文池中相关联地存储所述上下文信息。在上下文池中还要存储与其关联的当前线程的线程ID,据此可以找到上下文信息。
与现有技术中将上下文信息作为参数代入服务中的情况相比,通过将上下文信息与系统信息分离,并存储上下文信息,可以避免对每个服务接口的不断修改。
如果SOAP服务器需要上下文信息,即,响应于SOAP服务器需要获取上下文信息,则在步骤305,例如通过预先编写的用户代码扩展点,从SOAP服务器的当前执行线程获取当前线程的线程ID;然后,在步骤306,根据所获得的线程ID在上下文池中提取与所获得的线程ID匹配的上下文信息。由于在本实施例中,在线程ID是唯一标识上下文信息的情况下,通过用当前线程的线程ID作为标识符,可以找到与其对应的上下文信息。当然,如果采用其他标识手段,在这里就需要获得其他能够找到上下文信息的其他标识手段,其目的是能够从上下文池中找到上下文信息。
例如,可以在服务A向要调用的服务B发送新的请求时,执行步骤305和306;也可以在服务A的执行过程中需要时,执行步骤305和306。因此,在将上下文信息存储到上下文池中之后,可以在SOAP服务器中的任意需要的时刻来执行步骤305和306。事实上,在步骤305和306之前可以进行很多其他步骤或处理,并且可以在不同的环境中执行步骤305和306,这些都不在本发明的范畴内,因此在图3中用虚线表示。
在下文中分别结合图4和5描述针对图3中的获取上下文信息的步骤和提取上下文信息的步骤的具体实现方法。
图4是根据本发明实施例的用于上下文信息获取的方法的流程图。该方法在步骤401开始。在步骤402,从经过解析的SOAP请求获取上下文信息,并判断上下文信息是否有效。在这里判断上下文信息是否有效指的是判断上下文信息是否是正确的上下文信息,例如排除其它无关的信息或无限大的不可能存储的信息等。
如果在步骤402中判断上下文信息无效,则该方法转到步骤403,处理结束。如果在步骤402中判断上下文信息有效,则该方法转到步骤404,获取所生成线程的线程ID。
然后,该方法转到步骤405,建立上下文信息与当前线程的线程ID之间的关联关系,例如,使得所述上下文信息与线程ID关联,或者将上下文信息与线程ID绑定或附加等其它类似操作。在将所述上下文信息与线程ID关联之后,该方法转到步骤406,在上下文池中存储上下文信息。
在这里,通过对上下文信息的有效性判断,可以有利地提高上下文的使用效率,当然本发明并不限于此。
图5是根据本发明实施例的用于上下文信息提取的方法的流程图。以下结合图5描述提取过程的具体步骤。
在步骤501,提取过程开始。在步骤502,判断是否存在与所述线程ID相匹配的上下文信息,即是否有其关联的唯一标识符与所述线程ID相匹配的上下文信息。如果在步骤502中判断存在与所述线程ID相匹配的上下文信息,则该方法转到步骤503,从所述上下文池提取与所述线程ID相匹配的上下文信息,然后转到步骤504,提取过程结束。
当然,在步骤502中有可能判断不存在与所述线程ID相匹配的上下文信息,此时,该线程可能已经结束(例如非法结束等),也可能该线程本身结束但是其子线程仍旧存在(例如存在父子线程关系)。并不能因为该线程已经结束,就说明完全不存在与当前线程的线程ID相关的上下文信息。
根据本发明的一方面,需要知道在线程的执行期间是否存在父子线程关系。这里,术语“父线程”和“子线程”是具有父子关系的2个线程,例如父线程可以派生其子线程,子线程又可以派生其二级子线程,等等。
如果线程的执行结束,那么或者线程已经完全结束,或者线程本身结束,但是其自身的子线程还没有结束,或者其子线程的子线程等还没有结束。也就是说,线程本身还有可能存在其子线程。如果线程产生新的子线程,则这个线程的上下文信息同样可以被其子线程利用。对于这种线程树的具体原理,是本领域普通技术人员公知的,在这里将不展开具体描述。
针对线程树的情况,根据本发明实施例的上下文池可用于存储具有各线程之间的父子关系的这种线程树。如果线程还存在其子线程,则可根据这种线程树来判断在所述上下文池中是否存在与所述当前线程的父线程ID相匹配的上下文信息。
由此,在提取过程中,如果不存在与所述线程ID相匹配的上下文信息,则在图5的步骤505,在所述上下文池中判断是否存在与所述线程的每个父线程ID相匹配的上下文信息,即是否有其关联的唯一标识符与所述父线程ID相匹配的上下文信息。判断是否存在与所述线程的每个父线程ID相匹配的上下文信息的目的是,如果存在线程树,则需要对线程树进行查询,在线程树中具有父子关系的线程均有可能是与当前线程相关的线程,具有父子关系的线程具有的上下文信息同样可用于当前线程。
如果在步骤505中判断存在与所述线程的每个父线程ID相匹配的上下文信息,则转到步骤506,从所述上下文池提取其关联的唯一标识符与所述线程的父线程ID相匹配的上下文信息,然后过程在步骤507结束。此时,尽管线程本身结束,但是由于其子线程的存在,通过符合子线程的上下文信息的引用,同样可以实现对上下文信息的共享。这里的子线程可以是线程树中的任意层次的子线程。否则,在步骤508,在线程池中不存在对应的上下文信息,那么提取过程结束。
本发明考虑到这样的父子线程关系的存在,可以解决在提取过程中,如果当前线程不存在而其子线程(或更深级别子线程)存在时,如何解决提取问题的一种方案。
根据本发明的另一方面,在线程的执行期间还有可能采用线程池技术。
如果使用线程池技术,那么将意味着有可能SOAP服务器当前执行的线程是先前曾经从线程池中分配过的线程。假如在上下文池中的上下文信息仍旧存在,即,还没有被清除,那么有可能线程ID并不能够唯一的标识一个上下文信息。于是,在本发明的实施例中引入线程借出ID,它是线程在线程池中线程身份的标识。因此,如果将线程借出ID与线程ID结合和/或组合(例如线程借出ID+线程ID),就可以唯一地标识上下文信息。因此,在本发明中,除了通过线程ID作为标识符/唯一标识符之外,还可以使用例如线程借出ID与线程ID的组合或其他适合方式作为标识符/唯一标识符。
在说明书中先前描述的采用当前线程的线程ID实施例,不考虑采用线程池的情况。在基于线程池的实施例中,本发明在以上所述的解析处理时,引入借出线程ID,例如,使得所述上下文信息与线程ID和所述线程池中的线程借出ID的组合关联,由此可以在提取时根据线程ID和线程借出ID的组合获得唯一的上下文信息。其他过程与上述过程类似。
由此,根据本发明的实施例,考虑到了存在线程池和父子关系线程的情况,这样使得本发明更加适用于具体的环境。当然,本发明不限于此,还可以引入其它的处理环境,同时可采用有针对性的处理,这里提出的这两种情况只是示例性的。
在利用上下文管理器管理上下文信息的过程中,可能存在这样的情况,即线程本身及其子线程都已经结束,但是在线程池中仍然存在与该线程相关的上下文信息(例如线程异常结束的情况),这种上下文信息是无用途的,从而形成冗余信息。因此,为了节省上下文池的空间和提高共享的效率,需要定期清理在上下文池中无用途的上下文信息,可以理解,可以通过定期检查程序、定期检查线程等来执行所述定期清理过程。根据本发明实施例,在上下文管理器中还可以配置清理模块,用于定期检查所述上下文池,如果存储器中已经不存在所述线程ID,则从所述上下文池中去除与所述线程ID关联的上下文信息。当然,这种维护方式是可选的,所属技术领域的技术人员应当明白,还可以通过其它方式实现定期清理。
图6是根据本发明实施例的用于上下文信息维护的方法的流程图。首先,在步骤601开始,在步骤602,例如通过一个计时器,定期地获取一个上下文信息。
在步骤603,判断该上下文信息的相关线程是否均为不活动线程,这里,相关线程可以包括全部与该上下文信息相关的所有线程的信息,例如,仅与该上下文信息相关的线程ID所表示的线程,或者与该上下文信息相关的父线程ID所表示的线程等(存在父线程时)。如上所述,尽管当前的线程可能不存在,但是由于线程树的存在,具有父子关系的线程ID可能仍旧是有用的。
如果在步骤603中判断该上下文信息的相关线程均为不活动线程,则转到步骤604,清除与该线程ID相关的上下文信息,然后,过程在步骤605结束,从而在上下文池中删除已经无用的上下文信息。
如果在步骤603中判断该上下文信息的相关线程并非均为不活动线程,说明与该线程ID相关的上下文信息是有用的,所以返回步骤602继续获取下一个上下文信息,继续检查,如此循环,以达到定期检查的目的。
图7是根据本发明实施例的用于传递信息的装置的方框图。根据本发明的实施例,提供上下文管理器来实现上下文信息的管理和共享。所述上下文管理器例如可以通过多个(例如2个)用户代码扩展点访问。所述上下文管理器包括例如上下文信息存储部分、上下文池和上下文信息提取部分。
其中,根据功能的划分,上下文信息存储部分可包括例如:信息获取模块,其用于从当前接收的消息分离消息的信封部分和消息体部分(例如SOAP请求),并从信封部分提取属于非功能性信息的上下文信息;第一生成标识符模块,其用于根据当前创建的线程生成唯一标识符,以唯一地标识上下文信息,这里的生成方式并没有限制;关联模块,其用于将上下文信息与唯一标识符形成一对一关系;以及存储模块,其用于将上下文信息存储在上下文池中,上述唯一标识符可用于唯一地从上下文池中找到上下文信息。上下文信息提取部分包括:第二生成标识符模块,其用于根据当前执行的线程生成标识符,以用于从上下文池中可以识别出当前需要的上下文信息,应注意,在这里获取的对象(当前执行的线程)可能与第一生成标识符模块所获取的对象(先前创建的线程)相同,也可能不同;获取模块,其用于在需要时根据由第二生成标识符模块获取的标识符从上下文池中获取上下文信息。其中,上下文池是具有一定存储空间的可以被SOAP服务器中的各个组件或模块(例如,上下文信息存储部分和上下文信息提取部分)所访问的存储实体,可以理解,这种存储实体可以通过多种方式来实现,例如物理存储器、数据库、缓存、和具有适当存储功能的其他方式。
可以理解,在执行存储和提取的多个用户代码扩展点之间完全是相互独立的,可通过操作者在需要时分别执行,也就是说,可通过操作者决定在哪个用户代码扩展点中执行哪个过程。
根据本发明的可选实施例,可选地,在本发明的上下文管理器中还可以包括:清理模块,用于定期维护在上下文池中存储的上下文信息。例如,在清理模块中可以包括计时器,通过计时器定期地获取上下文信息,检查在存储器中是否存在与该上下文信息相关的线程,这里相关线程可以包括全部与该上下文信息相关的所有线程的信息,例如,仅与该上下文信息相关的线程ID所表示的线程,以及与该上下文信息相关的父线程ID所表示的线程等。这种判断是为了知道目前存储的上下文信息是否仍旧是有用的。如果存在相关的线程,则说明当前的上下文信息是有用的,如果不存在相关的线程,则说明当前的上下文信息是无用的,可以去除无用的上下文信息。从而实现对上下文池的定期维护。当然,本发明不限于这种维护方式,还可以通过其它方式来实现。
根据本发明实施例中的在web服务调用链中传递上下文信息的装置,其采用一种中心化的管理,将所有需要共享的上下文信息放在一个中心化的存储区域中,并通过线程ID、线程ID与线程借出ID的结合体、线程树等技术存取,从而可以以透明的方式实现在web服务的不同用户代码扩展点之间对上下文信息的共享。应注意,尽管在本发明中描述了在web服务的调用链中对上下文信息的共享,但是这种信息的共享机制同样可以应用于各种应用中,例如分布式应用等环境。
通过本发明各个优选实施例,可以解决唯一地识别、存储和提取上下文信息。并可以定期清理上下文池中过期的上下文信息。此外,还可以更好地支持线程树。
在图2所示本发明的实施例中,服务A和服务B位于不同的SOAP服务器中,然而,服务A和服务B也可以位于相同的SOAP服务器中。图2中的部件(a)和(b)可以属于不同的物理组件、软件组件、模块、固件及其组合,也可以结合在一体实现。
本发明可采用完全硬件实施例、完全软件实施例或包含硬件和软件元素的实施例的形式。在优选实施例中,在包括但不限于固件、驻留软件、微码等的硬件和软件中实现本发明。此外,本发明可采用从计算机可用或计算机可读介质可访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供用于计算机或任意指令执行系统或与其连接的程序代码。
为了这里说明的目的,计算机可用或计算机可读介质可以是可包含、存储、通信、传播或传输用于指令执行系统、装置或设备或与其连接的程序的任意装置。介质可以是电子、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括:半导体或固态存储器、磁带、可卸计算机磁盘、随机存取存储区(RAM)、只读存储区(ROM)、硬盘和光盘。光盘的当前实例包括压缩盘-只读存储区(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
本发明的实施例不限于上述实施例,并且可以扩展和修改,扩展和修改的实施例同样包括在本发明的技术范围内。对于本领域普通技术人员来说,很容易实现其它优点和修改。因此,本发明在其更宽方面不限于这里所示和所述的具体细节和代表性实施例。因此,可以在不脱离由所附权利要求及其等同物所限定的一般创造性概念的精神或范围的情况下进行各种修改。
Claims (20)
1.一种在web服务器上传递上下文信息的方法,所述web服务器包括上下文池,所述方法包括:
响应于web服务器接收到消息,
从所述消息获取上下文信息;
根据处理所述消息的线程生成唯一标识符;
将所述上下文信息与所生成的唯一标识符关联;以及
在web服务器的上下文池中相关联地存储所述上下文信息及其关联的唯一标识符;
响应于web服务器需要获取所述上下文信息,
根据web服务器中当前执行的线程生成标识符;以及
从所述上下文池中提取其关联的唯一标识符与所生成的标识符相匹配的上下文信息。
2.如权利要求1的方法,其中所述web服务器是SOAP服务器,所述消息是SOAP请求。
3.如权利要求2的方法,其中所述web服务器还包括:用于接收SOAP请求的响应部件和用于发送SOAP请求的请求部件;其中在所述响应部件中执行存储所述上下文信息及其关联的唯一标识符的步骤,在所述请求部件中执行提取其相关联的唯一标识符与所生成的标识符相匹配的上下文信息的步骤。
4.如权利要求3的方法,其中所述SOAP服务器需要获取所述上下文信息的情况包括:所述请求部件需要构造一个包含上下文信息的SOAP请求。
5.如权利要求2的方法,其中所述上下文信息是SOAP请求的信封中的信息。
6.如权利要求1的方法,其中所述唯一标识符和标识符是当前线程的线程ID。
7.如权利要求1的方法,其中在获取上下文信息之后,判断所述上下文信息是否有效;如果有效,则执行在所述web服务器的上下文池中存储所述上下文信息及其关联的唯一标识符的步骤。
8.如权利要求6的方法,其中在所述上下文池中还存储记录各线程之间的父子关系的线程树,所述提取步骤包括:如果在所述上下文池中不存在与当前线程的线程ID相匹配的上下文信息,则在所述上下文池中通过线程树提取其关联的唯一标识符与当前线程的父线程ID相匹配的上下文信息。
9.如权利要求1的方法,其中,所述web服务器支持线程池,所述唯一标识符和标识符是当前线程的线程ID与借出ID的组合。
10.如权利要求1的方法,还包括:定期检查所述上下文池,从所述上下文池中去除与其相关联的唯一标识符所相关的线程均为不活动线程的上下文信息。
11.一种在web服务器上传递上下文信息的装置,所述web服务器包括上下文池,所述装置包括:
从web服务器接收的消息获取上下文信息的模块;
根据处理所述消息的线程生成唯一标识符的模块;
将上下文信息与所生成的唯一标识符关联的模块;
在所述web服务器的上下文池中相关联地存储上下文信息及其关联的唯一标识符的模块;
根据所述web服务器中当前执行的线程生成标识符的模块;以及
从上下文池中提取出其关联的唯一标识符与所生成的标识符相匹配的上下文信息的模块。
12.如权利要求11的装置,其中所述web服务器是SOAP服务器,所述消息是SOAP请求。
13.如权利要求12的装置,其中所述web服务器还包括:响应部件,用于接收SOAP请求;和请求部件,用于发送SOAP请求;其中所述上下文池中存储所述上下文信息的模块位于所述响应部件中,所述从上下文池中提取与所生成的标识符相匹配的上下文信息的模块位于所述请求部件中。
14.如权利要求13的装置,其中所述SOAP服务器需要获取所述上下文信息的情况包括:所述请求部件需要构造一个包含上下文信息的SOAP请求。
15.如权利要求12的装置,其中所述上下文信息是SOAP请求的信封中的信息。
16.如权利要求11的装置,其中所述唯一标识符和标识符是当前线程的线程ID。
17.如权利要求11的装置,还包括:判断所述上下文信息是否有效的模块。
18.如权利要求16的装置,其中在所述上下文池中还存储记录各线程之间的父子关系的线程树,所述从所述上下文池中提取出其关联的唯一标识符与所生成的唯一标识符相匹配的上下文信息的模块进一步用于,如果在所述上下文池中不存在与当前线程的线程ID相匹配的上下文信息,则在所述上下文池中通过线程树提取出其关联的唯一标识符与当前线程的父线程ID相匹配的上下文信息。
19.如权利要求11的装置,其中所述web服务器支持线程池,其中所述唯一标识符和标识符是当前线程的线程ID与借出ID的组合。
20.如权利要求11的装置,还包括:定期检查所述上下文池,从所述上下文池中去除与其相关联的唯一标识符所相关的线程均为不活动线程的上下文信息的模块。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910133409A CN101854311A (zh) | 2009-03-31 | 2009-03-31 | 在web服务器上传递上下文信息的方法和装置 |
US12/749,031 US8356095B2 (en) | 2009-03-31 | 2010-03-29 | Method and apparatus for transferring context information on web server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910133409A CN101854311A (zh) | 2009-03-31 | 2009-03-31 | 在web服务器上传递上下文信息的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101854311A true CN101854311A (zh) | 2010-10-06 |
Family
ID=42785626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910133409A Pending CN101854311A (zh) | 2009-03-31 | 2009-03-31 | 在web服务器上传递上下文信息的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8356095B2 (zh) |
CN (1) | CN101854311A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022627A (zh) * | 2015-06-02 | 2015-11-04 | 上海斐讯数据通信技术有限公司 | 一种Android系统中View间的通信方法 |
CN106549997A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 用户上下文信息的获取方法和装置 |
CN107533488A (zh) * | 2015-10-22 | 2018-01-02 | 甲骨文国际公司 | 用于在交易处理环境中提供mssq通知的系统和方法 |
CN108536613A (zh) * | 2018-03-08 | 2018-09-14 | 阿里巴巴集团控股有限公司 | 数据清理方法、装置、及服务器 |
CN108833500A (zh) * | 2018-05-29 | 2018-11-16 | 阿里巴巴集团控股有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN109445880A (zh) * | 2018-10-23 | 2019-03-08 | 数贸科技(北京)有限公司 | 跨线程调用链上下文的传递方法、装置及电子设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140067912A1 (en) * | 2012-09-04 | 2014-03-06 | Bank Of America Corporation | System for Remote Server Diagnosis and Recovery |
US10725889B2 (en) * | 2013-08-28 | 2020-07-28 | Micro Focus Llc | Testing multi-threaded applications |
US20170118165A1 (en) * | 2014-11-08 | 2017-04-27 | Ashish Kumar | System and method for controlled sharing and synchronizing information across a plurality of mobile client application computers |
US10122660B2 (en) | 2015-03-27 | 2018-11-06 | MINDBODY, Inc. | Contextual mobile communication platform |
US9838505B2 (en) * | 2015-12-11 | 2017-12-05 | Sap Se | Application based context pooling |
US10204319B2 (en) * | 2017-01-20 | 2019-02-12 | Wipro Limited | Enterprise system and method for facilitating common platform for multiple-users working parallelly in enterprise environment |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070211690A1 (en) * | 2006-03-13 | 2007-09-13 | Microsoft Corporation | Network interface routing using computational context |
WO2009027961A2 (en) * | 2007-08-27 | 2009-03-05 | Correlsense Ltd. | Apparatus and method for tracking transaction related data |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760337B1 (en) * | 1999-08-17 | 2004-07-06 | Conexant Systems, Inc. | Integrated circuit that processes communication packets with scheduler circuitry having multiple priority levels |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
US20030206192A1 (en) * | 2001-03-31 | 2003-11-06 | Mingte Chen | Asynchronous message push to web browser |
US7085889B2 (en) * | 2002-03-22 | 2006-08-01 | Intel Corporation | Use of a context identifier in a cache memory |
US7210026B2 (en) * | 2002-06-28 | 2007-04-24 | Sun Microsystems, Inc. | Virtual register set expanding processor internal storage |
US7596523B2 (en) * | 2002-09-09 | 2009-09-29 | Barra, Inc. | Method and apparatus for network-based portfolio management and risk-analysis |
US7478151B1 (en) * | 2003-01-23 | 2009-01-13 | Gomez, Inc. | System and method for monitoring global network performance |
EP1678972B1 (en) * | 2003-10-01 | 2009-08-26 | Actix Limited | Call tracking systems |
US20060248199A1 (en) * | 2005-04-29 | 2006-11-02 | Georgi Stanev | Shared closure persistence of session state information |
US20060248283A1 (en) * | 2005-04-29 | 2006-11-02 | Galin Galchev | System and method for monitoring threads in a clustered server architecture |
US7689660B2 (en) * | 2005-06-09 | 2010-03-30 | Sap Ag | Application server architecture |
US20070033640A1 (en) | 2005-07-22 | 2007-02-08 | International Business Machines Corporation | Generic context service in a distributed object environment |
US7454414B2 (en) * | 2005-08-30 | 2008-11-18 | International Business Machines Corporation | Automatic data retrieval system based on context-traversal history |
US7945677B2 (en) * | 2005-09-06 | 2011-05-17 | Sap Ag | Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions |
US8707323B2 (en) * | 2005-12-30 | 2014-04-22 | Sap Ag | Load balancing algorithm for servicing client requests |
US20070156907A1 (en) * | 2005-12-30 | 2007-07-05 | Galin Galchev | Session handling based on shared session information |
US20080040418A1 (en) | 2006-08-11 | 2008-02-14 | Risaris | Accessing existing data using a service oriented architecture gateway |
US7865905B2 (en) | 2006-09-11 | 2011-01-04 | International Business Machines Corporation | Context-exchange mechanism for accumulating and propagating contextual information between applications |
US8689215B2 (en) * | 2006-12-19 | 2014-04-01 | Intel Corporation | Structured exception handling for application-managed thread units |
US8732236B2 (en) * | 2008-12-05 | 2014-05-20 | Social Communications Company | Managing network communications between network nodes and stream transport protocol |
US8732709B2 (en) * | 2008-02-05 | 2014-05-20 | Red Hat, Inc. | Transaction management in a web service messaging environment |
CN102037481A (zh) * | 2008-03-19 | 2011-04-27 | 苹果核网络股份有限公司 | 用于检测行为模式的方法及设备 |
-
2009
- 2009-03-31 CN CN200910133409A patent/CN101854311A/zh active Pending
-
2010
- 2010-03-29 US US12/749,031 patent/US8356095B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070211690A1 (en) * | 2006-03-13 | 2007-09-13 | Microsoft Corporation | Network interface routing using computational context |
WO2009027961A2 (en) * | 2007-08-27 | 2009-03-05 | Correlsense Ltd. | Apparatus and method for tracking transaction related data |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022627A (zh) * | 2015-06-02 | 2015-11-04 | 上海斐讯数据通信技术有限公司 | 一种Android系统中View间的通信方法 |
CN105022627B (zh) * | 2015-06-02 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 一种Android系统中View间的通信方法 |
CN106549997A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 用户上下文信息的获取方法和装置 |
CN106549997B (zh) * | 2015-09-22 | 2019-11-12 | 阿里巴巴集团控股有限公司 | 用户上下文信息的获取方法和装置 |
CN107533488A (zh) * | 2015-10-22 | 2018-01-02 | 甲骨文国际公司 | 用于在交易处理环境中提供mssq通知的系统和方法 |
CN107533488B (zh) * | 2015-10-22 | 2021-06-29 | 甲骨文国际公司 | 用于在交易处理环境中提供mssq通知的系统和方法 |
CN108536613A (zh) * | 2018-03-08 | 2018-09-14 | 阿里巴巴集团控股有限公司 | 数据清理方法、装置、及服务器 |
CN108833500A (zh) * | 2018-05-29 | 2018-11-16 | 阿里巴巴集团控股有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN108833500B (zh) * | 2018-05-29 | 2021-03-30 | 创新先进技术有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN109445880A (zh) * | 2018-10-23 | 2019-03-08 | 数贸科技(北京)有限公司 | 跨线程调用链上下文的传递方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20100250740A1 (en) | 2010-09-30 |
US8356095B2 (en) | 2013-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101854311A (zh) | 在web服务器上传递上下文信息的方法和装置 | |
CN102089767B (zh) | 无人值守应用程序的经认证数据库连接 | |
CN102821104B (zh) | 授权的方法、装置和系统 | |
US8375425B2 (en) | Password expiration based on vulnerability detection | |
JP5334693B2 (ja) | ネットワーク管理方法、ネットワーク管理プログラム、ネットワークシステム及び中継機器 | |
KR102214247B1 (ko) | 서비스 구현을 위한 방법 및 장치 | |
US20040186880A1 (en) | Management apparatus, terminal apparatus, and management system | |
EP4161012A1 (en) | Authentication method and apparatus, electronic device, server, program, and storage medium | |
CN103119975B (zh) | 用户账户恢复 | |
US9053303B2 (en) | Apparatus, authentication system, authentication control method, authentication control program, and computer-readable recording medium having authentication control program | |
US20020056079A1 (en) | Storage media storing data related to smart card, smart card system and smart card application loading method | |
CN104052616A (zh) | 一种对互联网数据中心中的业务进行管理的方法及系统 | |
US8468585B2 (en) | Management of credentials used by software applications | |
EP2173079A2 (en) | Network authorization method and application thereof | |
KR20150026587A (ko) | 신규 기기로부터의 로그인 알림 기능 제공 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
CN110599311A (zh) | 资源处理方法、装置、电子设备及存储介质 | |
CN114499975B (zh) | 登录服务器的校验方法、服务器及存储介质 | |
US20230102341A1 (en) | Electronic device and method for identifying service access | |
JP2007199995A (ja) | アクセス制御装置及びアクセス制御方法及びプログラム | |
US20110202768A1 (en) | Apparatus for managing identity data and method thereof | |
JP2006072904A (ja) | 情報処理装置、情報処理方法、ならびにプログラム、記憶媒体 | |
KR102104823B1 (ko) | 인증프로세스의 단계분할과 생체인증을 접목한 개인정보침해 방어 방법 및 시스템 | |
JP7200776B2 (ja) | 情報処理システム及びプログラム | |
CN112311771B (zh) | 一种管理用户接入设备的方法、管理设备和网络设备 | |
CN116055554B (zh) | 一种基于消息机制并应用于数字化业务的通知引擎 |
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: 20101006 |