一种会话session共享方法及应用服务器与流程

文档序号:12839158阅读:271来源:国知局
一种会话session共享方法及应用服务器与流程

本发明涉及互联网技术领域,尤其涉及一种会话session共享方法及应用服务器。



背景技术:

随着信息时代的到来,一套it系统已经不能满足企业发展的需求,往往会建设多套it系统,多套it系统或采用互不联系的域名或者采用多级域名的方式实现。而这些系统间一般会采用单点登录(sso,singlesignon)实现系统间互相登录,避免用户在各系统间反复登录的问题。

但是,由于上述系统可能采用不同的技术架构,如j2ee、asp.net、php等,那么,不同结构的系统间session就无法保持有效的同步。在用户的使用过程中就会出现在一个系统中会话(session)还能够正常使用,但是打开另一个系统,session就失效了,如此,给用户的使用带来极大的不便。

目前,为了解决上述问题,对于相同的技术架构的session共享主要采用了session独立的同步服务器方式,这种同步服务器主是采用独立的文件系统,或者独立的数据库来存储共用的session信息,此时,session的数据格式以及使用方式均要统一,这就要求每个需要同步的系统要保持一致,才能实现session的同步。在这种情况下,需要对上述每一个系统中的session模块重新编写,以从公用存储位置获取session,增加了工作量和成本;对于不同的技术架构的session共享,如有些系统采用j2ee架构,有些采用asp.net架构,有些采用php架构,这些不同的架构对于session的管理是不相同的技术,要实现session的共享同步,难度很大,需要考虑不同数据结构的session的同步机制,对原系统改动很大,增加系统的复杂度。

可见,现有技术中并不存在一种合理的session共享方法。



技术实现要素:

有鉴于此,本发明实施例期望提供一种会话session共享方法及应用服务器,用以实现session共享,方便操作,简化系统结构,减少系统修改的工作量和成本。

为达到上述目的,本发明的技术方案是这样实现的:

第一方面,本发明实施例提供一种session共享方法,应用于第一应用服务器,所述方法包括:监听用户的session请求,获得session变化信息;将所述session变化信息以广播的形式发送给第二应用服务器,其中,所述session变化信息用于指示所述第二应用服务器根据所述session变化信息,更新自身的session数据。

在上述方案中,在所述将所述session变化信息以广播的形式发送给第二应用服务器之后,所述方法还包括:接收来自所述第二应用服务器的session更新成功消息,并停止广播所述session变化信息。

在上述方案中,在所述将所述session变化信息以广播的形式发送给第二应用服务器之后,所述方法还包括:接收来自所述第二应用服务器的session更新成功消息后,判断是否所有应用服务器的session数据均已更新完成;若是,停止广播所述session变化信息;若否,重复广播所述session变化信息。

第二方面,本发明实施例提供一种session共享方法,应用于第二应用服务器,所述方法包括:接收来自第一应用服务器的session变化信息;根据session变化信息,更新第二应用服务器的session数据。

在上述方案中,所述根据session变化信息,更新第二应用服务器的session数据,包括:根据所述第二应用服务器的技术架构,将所述session变化信息转换为所述技术架构所需要的session数据格式,获得转换后的session数据;以所述转换后的session数据更新所述第二应用服务器的session数据。

在上述方案中,在所述根据session变化信息,更新第二应用服务器的 session数据之后,所述方法还包括:将session更新成功信息以广播的形式发送至所述第一应用服务器。

第三方面,本发明实施例提供一种应用服务器,所述应用服务器包括:第一监听模块、第一发送模块以及第一消息中间件模块;其中,所述第一监听模块,用于监听用户的session请求,获得session变化信息,并发送给所述第一发送模块;所述第一发送模块,用于接收所述session变化信息,并调用所述第一消息中间件模块接口,将所述session变化信息发送给所述第一消息中间件模块;所述第一消息中间件模块,用于接收所述session变化信息;将所述session变化信息以广播的形式发送给第二应用服务器,其中,所述session变化信息用于指示所述第二应用服务器根据所述session变化信息,更新自身的session数据。

在上述方案中,所述第一消息中间件模块,还用于在将所述session变化信息以广播的形式发送给第二应用服务器之后,接收来自所述第二应用服务器的session更新成功消息,并停止广播所述session变化信息。

在上述方案中,所述第一消息中间件模块,还用于在将所述session变化信息以广播的形式发送给第二应用服务器之后,接收来自所述第二应用服务器的session更新成功消息,并通知所述第一发送模块;所述第一发送模块,还用于判断是否所有应用服务器的session数据均已更新完成;若是,通知所述第一消息中间件模块停止广播所述session变化信息;若否,通知所述第一消息中间件模块重复广播所述session变化信息。

第四方面,本发明实施例提供一种应用服务器,所述应用服务器包括:第二接收模块以及第二消息中间件模块;其中,所述第二消息中间件模块,用于接收来自第一应用服务器的session变化信息;所述第二接收模块,用于根据所述session变化信息,更新自身所属应用服务器的session数据。

在上述方案中,所述第二接收模块,具体用于:根据自身所属应用服务器的技术架构,将所述session变化信息转换为所述技术架构所需要的session数据格式,获得转换后的session数据;以所述转换后的session数据更新自身所 属应用服务器的session数据。

在上述方案中,所述第二消息中间件模块,还用于在所述第二接收模块更新自身所属应用服务器的session数据之后,将session更新成功信息以广播的形式发送至所述第一应用服务器。

本发明实施例提供的session共享方法中,无论是同构的应用服务器,还是异构的应用服务器,仅需监听用户的session请求,获得session变化信息,然后,将session变化信息以广播的形式发送给第二应用服务器,使得第二应用服务器能够根据该session变化信息更新自身的session数据,以达到session共享的目的,无需如现有技术一般架设同步服务器,方便操作,简化系统结构,减少系统修改的工作量和成本。进一步地,对于异构的应用服务器,在接收到广播的session变化消息后,能够根据自身应用服务器的技术架构,对session变化信息进行转化,转化成适自身应用服务器的session数据,以达到session共享同步的目的,方便操作,简化系统结构,减少系统修改的工作量和成本。

附图说明

图1为本发明实施例中的session共享系统的结构示意图;

图2为本发明实施例中的session共享系统进行session共享方法的流程示意图;

图3为本发明实施例中的第一应用服务器进行session共享方法的流程示意图;

图4为本发明实施例中的第二应用服务器进行session共享方法的流程示意图;

图5为本发明实施例中的应用服务器的一种结构示意图;

图6为本发明实施例中的应用服务器的另一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述。

本发明实施例公开了一种session共享系统,图1为本发明实施例中的session共享系统的结构示意图,参见图1所示,该系统至少包括:第一应用服务器1以及第二应用服务器2,这里,第一应用服务器1能够与第二应用服务器2共享session。这里,在本发明实施例中,以上述系统仅包括2个应用服务器为例进行说明,但是在具体实施过程中,上述系统还可以包括多个应用服务器,本发明不做具体限定。

在实际应用中,第一应用服务器1和第二应用服务器2的技术架构可以相同也可以不同,本发明不做具体限定。

具体来说,仍参考图1所示,第一应用服务器1至少包括:第一监听模块11、第一发送模块12以及第一消息中间件模块13;第二应用服务器2至少包括:第二接收模块21以及第二消息中间件模块22。

结合本发明实施例,在上述系统中,第一监听模块,用于监听用户的session请求,获得session变化信息;将session变化信息发送给第一发送模块;

其中,session变化信息包括用户登录、使用session、session失效等信息。

第一发送模块,用于获得上述session变化信息;将session变化信息转发给第一消息中间件模块;

第一消息中间件模块,用于接收第一发送模块发送的session变化信息;将session变化信息以广播的形式发送给第二接收模块;

第二消息中间件模块,用于接收第一消息中间件模块以广播的形式发送的session变化信息,并将session变化信息发送至第二接收模块;

第二接收模块,用于接收上述session变化信息;根据第二应用服务器的技术架构,将session变化信息转换为该技术架构所需要的session数据格式;以转换后的session数据更新第二应用服务器的session数据。

需要说明的是,第一应用服务器与第二应用服务之间的session共享可以为双向的,那么,在第二应用服务器中可以分别设置有与第一应用服务器中的第一监听模块以及第一发送模块功能相同的第二监听模块和第二发送模块,同理, 在第一应用服务器中可以设置有与第二应用服务器中的第二接收模块功能相同的第一接收模块。

下面结合上述系统来对本发明实施例中的session共享方法进行说明。

图2为本发明实施例中的session共享系统进行session共享方法的流程示意图,参见图2所示,该方法包括:

s201:第一监听模块监听用户的session请求,获得session变化信息;

具体来说,通过配置第一应用服务器中拦截用户session请求的配置模块,拦截session变化信息,这里,session变化信息可以包括用户登录、使用session、session失效等信息。

s202:第一监听模块将session变化信息发送给第一发送模块;

s203:第一发送模块将session变化信息转发给第一消息中间件模块;

具体来说,第一发送模块调用第一消息中间件模块接口,向第一消息中间件模块转发session变化信息。

s204:第一消息中间件模块将session变化信息以广播的形式发送给第二消息中间件模块;

具体来说,在每一个应用服务器中均具有一消息中间件模块,这些模块之间具有一数据交互的通路,即消息中间件通路,那么,第一消息中间件模块在接收到session变化信息之后,以广播的形式将session变化信息在消息中间件通路中发送给第二应用服务器,即发送给第二消息中间件模块。

s205:第二消息中间件模块将session变化信息发送至第二接收模块;

具体来说,第二消息中间件模块通过消息中间件通路接收到第一消息中间件模块广播的session变化信息后,将其转发给第二接收模块。

s206:第二接收模块根据session变化信息,更新第二应用服务器的session数据。

在具体实施过程中,由于第一应用服务器与第二应用服务器可以为相同技术架构,也可以为不同技术架构。那么,当第一应用服务器与第二应用服务器同构时,第二接收模块根据session变化信息,更新原有的session数据,如此, 实现了同构的第一应用服务器和第二应用服务器之间的session共享。

然而,当第一应用服务器与第二应用服务器异构时,由于不同技术架构所需要的session的数据格式不同,所以,为了实现异构的第一应用服务器和第二应用服务器之间的session共享,上述方法还可以包括:第二接收模块根据第二应用服务器的技术架构,将session变化信息转换为该技术架构所需要的session数据格式,获得转换后的session数据;以转换后的session数据更新第二应用服务器的session数据。

进一步地,在第二应用服务器更新自身的session数据之后,上述方法还包括:第二接收模块向第二消息中间件模块发送session更新成功信息;第二消息中间件模块将session更新成功信息以广播的形式发送至第一消息中间件模块;第一消息中间件模块停止广播session变化消息;

另外,第一消息中间件模块还可以将session更新成功信息转发给第一发送模块,那么,第一发送模块通知第一消息中间件模块停止广播session变化消息,此时,第一消息中间件模块停止广播session变化消息。

在另一实施例中,若session共享系统中包括三个及以上应用服务器时,第一应用服务器接收到第二应用服务器广播的session更新成功信息后,第一发送模块还需要判断是否所有应用服务器均返回session更新成功信息,也就是说判断是否所有应用服务器的session数据均已更新完成,若是,第一发送模块则通知第一消息中间件模块停止广播session变化信息,反之,第一发送模块通知第一消息中间件模块返回s204重复广播session变化信息。

至此,便完成了第一应用服务器与第二应用服务器session共享的流程。

下面站在系统内各设备侧对上述方法进行说明。

首先,站在第一应用服务器侧进行说明。

图3为本发明实施例中的第一应用服务器进行session共享方法的流程示意图,参见图3所示,该方法包括:

s301:监听用户的session请求,获得session变化信息;

这里,session变化信息可以包括用户登录、使用session、session失效等信 息。

s302:将session变化信息以广播的形式发送给第二应用服务器。

其中,session变化信息用于指示第二应用服务器根据session变化信息,更新自身的session数据。

在上述方案中,在s302之后,上述方法还可以包括:接收来自第二应用服务器的session更新成功消息,并停止广播session变化信息。

在上述方案中,在s302之后,上述方法还可以包括:接收来自第二应用服务器的session更新成功消息后,判断是否所有应用服务器的session数据均已更新完成;若是,停止广播session变化信息;若否,重复广播session变化信息。

其次,站在第二应用服务器侧进行说明。

图4为本发明实施例中的第二应用服务器进行session共享方法的流程示意图,参见图4所示,该方法包括:

s401:接收来自第一应用服务器的session变化信息;

这里,session变化信息可以包括用户登录、使用session、session失效等信息。

s402:根据session变化信息,更新第二应用服务器的session数据。

在上述方案中,s402可以包括:根据第二应用服务器的技术架构,将session变化信息转换为该技术架构所需要的session数据格式,获得转换后的session数据;以转换后的session数据更新第二应用服务器的session数据。

在上述方案中,在s402之后,上述方法可以包括:将session更新成功信息以广播的形式发送至第一应用服务器。

由上述可见,本发明实施例所提供的session共享方法中,无论是同构的应用服务器,还是异构的应用服务器,仅需监听用户的session请求,获得session变化信息,这里,session变化信息可以包括用户登录信息、使用session信息或者session失效信息。然后,将session变化信息以广播的形式发送给第二应用服务器,使得第二应用服务器能够根据该session变化信息更新自身的session 数据,以达到session共享的目的,无需如现有技术一般架设同步服务器,方便操作,简化系统结构,减少系统修改的工作量和成本。进一步地,对于异构的应用服务器,在接收到广播的session变化消息后,能够根据自身应用服务器的技术架构,对session变化信息进行转化,转化成适自身应用服务器的session数据,以达到session共享同步的目的,方便操作,简化系统结构,减少系统修改的工作量和成本。

基于同一发明构思,本发明实施例提供一种应用服务器,与上述一个或者多个实施例中所述的第一应用服务器一致。

图5为本发明实施例中的应用服务器的一种结构示意图,参见图5所示,该应用服务器包括:第一监听模块51、第一发送模块52以及第一消息中间件模块53;其中,第一监听模块51,用于监听用户的session请求,获得session变化信息,并发送给第一发送模块52;第一发送模块52,用于接收session变化信息,并调用第一消息中间件模块接口,将session变化信息发送给第一消息中间件模块53;第一消息中间件模块53,用于接收session变化信息;将session变化信息以广播的形式发送给第二应用服务器,其中,session变化信息用于指示第二应用服务器根据session变化信息,更新自身的session数据。

在上述方案中,第一消息中间件模块53,还用于在将session变化信息以广播的形式发送给第二应用服务器之后,接收来自第二应用服务器的session更新成功消息,并停止广播session变化信息。

在上述方案中,第一消息中间件模块53,还用于在将session变化信息以广播的形式发送给第二应用服务器之后,接收来自第二应用服务器的session更新成功消息,并通知第一发送模块52;第一发送模块52,还用于判断是否所有应用服务器的session数据均已更新完成;若是,通知第一消息中间件模块53停止广播session变化信息;若否,通知第一消息中间件模块53重复广播session变化信息。

这里需要指出的是:以上应用服务器实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明应用 服务器实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。

基于同一发明构思,本发明实施例提供一种应用服务器,与上述一个或者多个实施例中的第二应用服务器一致。

图6为本发明实施例中的应用服务器的另一种结构示意图,参见图6所示,该应用服务器包括:第二消息中间件模块61以及第二接收模块62;其中,

第二消息中间件模块61,用于接收来自第一应用服务器的session变化信息;

第二接收模块62,用于根据session变化信息,更新自身所属应用服务器的session数据。

在上述方案中,第二接收模块62,具体用于:根据自身所属应用服务器的技术架构,将session变化信息转换为技术架构所需要的session数据格式,获得转换后的session数据;以转换后的session数据更新自身所属应用服务器的session数据。

在上述方案中,第二消息中间件模块61,还用于在第二接收模块62更新自身所属应用服务器的session数据之后,将session更新成功信息以广播的形式发送至第一应用服务器。

这里需要指出的是:以上应用服务器实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明应用服务器实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。

这里需要指出的是:

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序 号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介 质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1