CN109617953B - 一种会话处理方法和*** - Google Patents
一种会话处理方法和*** Download PDFInfo
- Publication number
- CN109617953B CN109617953B CN201811434590.3A CN201811434590A CN109617953B CN 109617953 B CN109617953 B CN 109617953B CN 201811434590 A CN201811434590 A CN 201811434590A CN 109617953 B CN109617953 B CN 109617953B
- Authority
- CN
- China
- Prior art keywords
- session object
- session
- redissession
- cached
- filter
- 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.)
- Active
Links
Images
Classifications
-
- 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/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种会话处理方法和***,基于会话过滤器的接口函数Filter获取用户请求,确定是否需要将用户请求对应的原始会话对象替换为缓存会话对象,调用缓存会话对象操作函数中的缓存Redis助手类对应的相关函数,将缓存会话对象的属性存储于缓存Redis集群中。通过本发明公开的方法,得到返回所述接口函数Filter的缓存会话对象,再将缓存会话对象的属性存储于缓存Redis集群中。本发明通过将所述缓存会话对象的属性存储于所述缓存Redis集群中,不仅能够实现会话信息持久化,还能快速读取会话信息。
Description
技术领域
本发明涉及移动业务支撑领域,更具体说涉及一种会话处理方法和***。
背景技术
业务支撑***(Business Support Systems,简称BSS)主要应用于通信行业,通过该***执行相应业务操作。
现有技术中的移动业务支撑***,通常使用会话粘连和中间件weblogic集群复制会话内存实现用户状态的保持,以及会话访问性能。其中,通过中间件weblogic集群复制会话内存能够保证应用异常时会话信息不会丢失,而会话粘连则最大程度上减少了复制会话内存的概率。
为了满足移动业务支撑***向分布式环境演进的需求,目前,在该演进过程中,移动业务支撑***中的中间件weblogic集群需要转入到容器docker环境下。
在容器docker环境下无法实现中间件weblogic集群复制会话内存,从而导致用户信息容易丢失,以及导致会话的访问性能下降的问题。
发明内容
有鉴于此,本申请提供了一种会话处理方法和***,以实现快速读取会话信息和会话信息持久化的目的。
为了实现上述目的,现提出的方案如下:
本发明第一方面公开了一种会话处理方法,包括:
基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理;
确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,若需要,则将利用所述会话管理修饰类SessionRequestWrapper中的会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession,并返回所述接口函数Filter;
基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性;
调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
优选的,所述基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,包括:
指定会话过滤器HttpServlet的名字Filter-name和类名Filter-class;
在web.xml文件中,基于所述名字Filter-name和所述类名Filter-class配置所述会话过滤器HttpServlet;
将所述会话过滤器HttpServlet和统一资源定位符URL进行关联,并建立所述会话过滤器HttpServlet的接口函数Filter。
优选的,所述确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,包括:
获取所述用户请求对应的原始会话对象;
判断所述原始会话对象是否存在SessionId,若存在,则判断所述原始会话对象是否有效;
若有效,确定所述原始会话对象不需要进行替换;
若无效,确定所述原始会话对象需要替换为缓存会话对象RedisSession;
若不存在,则确定所述原始会话对象需要替换为缓存会话对象RedisSession。
优选的,所述基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性,包括:
基于所述缓存会话对象RedisSession类中的会话对象操作函数,判断所述缓存会话对象RedisSession的属性是否为空;
若为空,则返回接口函数Filter,若不为空,则判断所述缓存会话对象RedisSession的属性是否存在;
若存在,则判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则删除所述缓存会话对象RedisSession的属性,若不为空,则更新所述缓存会话对象RedisSession的属性,并返回接口函数Filter;
若不存在,则判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则返回接口函数Filter,若不为空,则新建所述缓存会话对象RedisSession的属性,并返回接口函数Filter。
优选的,所述调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中,包括:
调用所述缓存会话对象RedisSession类的所述会话对象操作函数中的缓存Redis助手类对应的相关函数;
序列化所述缓存会话对象RedisSession的属性;
将所述序列化后的所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
本发明第二方面公开了一种会话处理***,包括:
获取单元,用于将基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理;
替换单元,用于确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,若需要,则将利用所述会话管理修饰类SessionRequestWrapper中的会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession,并返回所述接口函数Filter;
执行单元,用于基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性;
存储单元,用于调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
优选的,所述用于基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest的获取单元,包括:
指定模块,用于指定会话过滤器HttpServlet的名字Filter-name和类名Filter-class;
配置模块,用于在web.xml文件中,基于所述名字Filter-name和类名Filter-calss配置所述会话过滤器HttpServlet;
关联模块,用于将所述会话过滤器HttpServlet和统一资源定位符URL进行关联,并建立所述会话过滤器HttpServlet的接口函数Filter。
优选的,所述用于确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession的替换单元,包括:
请求对应模块,用于获取所述用户请求对应的原始会话对象;
第一判断模块,用于判断所述原始会话对象是否存在SessionId,若存在,则执行第二判断模块,若不存在,则确定所述原始会话对象需要替换为缓存会话对象RedisSession;
第二判断模块,用于判断所述原始会话对象是否有效,若有效,则确定所述原始会话对象不需要进行替换,若无效,则确定所述原始会话对象需要替换为缓存会话对象RedisSession。
优选的,所述用于基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性的执行单元,包括:
第三判断模块,用于基于所述缓存会话对象RedisSession类中的会话对象操作函数,判断所述缓存会话对象RedisSession的属性是否为空,若为空,则返回接口函数Filter,若不为空,则执行第四判断模块;
所述第四判断模块,用于判断所述缓存会话对象RedisSession的属性是否存在,若存在,则执行第五判断模块,若不存在,则执行第六判断模块;
所述第五判断模块,用于判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则删除所述缓存会话对象RedisSession的属性,若不为空,则更新所述缓存会话对象RedisSession的属性,并返回接口函数Filter;
所述第六判断模块,用于判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则返回接口函数Filter,若不为空,则新建所述缓存会话对象RedisSession的属性,并返回接口函数Filter。
优选的,所述调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中的存储单元,包括:
调用模块,用于调用所述缓存会话对象RedisSession类的所述会话对象操作函数中的缓存Redis助手类对应的相关函数;
序列化模块,用于序列化所述缓存会话对象RedisSession的属性;
属性存储模块,用于将所述序列化后的所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
本发明第三方面公开了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述本发明第一方面公开的一种会话处理方法。
本发明第四方面公开了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行如上述本发明第一方面公开的一种会话处理方法。
经由上述技术方案可知,本发明公开了一种会话处理方法和***,基于会话过滤器的接口函数Filter获取用户请求,确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,确定返回所述接口函数Filter的所述新会话对象,调用所述新会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述新会话对象的属性存储于缓存Redis集群中。通过本发明公开的方法,得到返回所述接口函数Filter的所述缓存会话对象RedisSession,再将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中,所述缓存Redis集群不仅能够实现会话信息持久化,还能快速读取会话信息。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种会话处理方法的流程示意图;
图2为本发明实施例公开的预设的会话过滤器的接口函数的流程示意图;
图3为本发明实施例公开的原始会话对象替换为缓存会话对象的流程示意图;
图4为本发明实施例公开的返回接口函数的会话对象的属性流程示意图;
图5为本发明实施例公开的一种会话处理***结构示意图;
图6为本发明实施例公开的一种会话处理***的获取单元结构示意图;
图7为本发明实施例公开的一种会话处理***的替换单元结构示意图;
图8为本发明实施例公开的一种会话处理***的执行单元结构示意图;
图9为本发明实施例公开的一种会话处理***的存储单元结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
由背景技术可知,现有技术中,主要基于移动业务支撑***,通常使用会话粘连和webloic集群复制会话内存实现用户状态的保持,以及会话访问性能。但是在docker环境下无法实现weblogic集群复制会话内存,从而导致用户信息容易丢失,以及导致会话的访问性能下降。因此,本发明公开了一种会话处理的方法,以实现得到会话信息持久化、快速读取会话信息的目的。
如图1所示,为本发明实施例公开的一种会话处理方法的流程示意图,包括如下步骤:
步骤S101:基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理。
在执行步骤S101的过程中,通过预设的会话过滤器HttpServlet的接口函数Filter获取用户请求。
在具体实现中,执行步骤S101的预设的会话过滤器HttpServlet的接口函数Filter的具体过程,如图2所示,包括:
步骤S201:指定会话过滤器HttpServlet的名字Filter-name和类名Filter-class。
步骤S202:在web.xml文件中,基于所述名字Filter-name和所述类名Filter-class配置所述会话过滤器HttpServlet。
步骤S203:将所述会话过滤器HttpServlet和统一资源定位符URL进行关联,并建立所述会话过滤器HttpServlet的接口函数Filter。
通过执行上述步骤S201-步骤S203建立会话过滤器HttpServlet的接口函数Filter。在建立所述会话过滤器HttpServlet的接口函数Filter后,通过接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理。
可选的,本发明实施例在web.xml文件中配置所述会话过滤器HttpServlet时可以采用以下相关程序代码进行配置:
需要说明的是,所述会话过滤器HttpServlet必须放在所有过滤器的第一个。
步骤S102:确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,若需要,则执行步骤S103,若不需要,则执行步骤S104。
在具体实现中,执行步骤S102的具体过程,如图3所示,主要包括以下步骤:
步骤S301:获取所述用户请求对应的原始会话对象。
步骤S302:判断所述原始会话对象是否存在SessionId,若存在,则进入步骤S303,若不存在,则进入步骤S305。
步骤S303:判断所述原始会话对象是否有效,若有效,则进入步骤S304,若无效,则进入步骤S305。
步骤S304:确定所述原始会话对象不需要进行替换。
步骤S305:确定所述原始会话对象需要替换为缓存会话对象RedisSession。
通过执行上述步骤S301-步骤S305对所述用户请求对应的原始会话对象进行判断后确定所述原始会话对象是否需要替换为缓存会话对象RedisSession。
可选的,本发明在weblogic.xml中配置会话复制方式,增加或修改session的PersistentStoreType的相关代码如下:
步骤S103:将利用所述会话管理修饰类SessionRequestWrapper中的会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession,并将所述缓存会话对象RedisSession作为新会话对象返回所述接口函数Filter。
在执行步骤S103的过程中,通过对会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession。
步骤S104:将所述原始会话对象返回所述接口函数Filter。
步骤S105:基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性。
在具体实现中,执行步骤S105的具体过程,如图4所示,包括:
步骤S401:基于所述缓存会话对象RedisSession,判断所述缓存会话对象RedisSession的属性是否为空,若不为空,则执行步骤S402,若为空,则执行步骤S408。
步骤S402:判断所述缓存会话对象RedisSession的属性是否存在,若存在,则执行步骤S405,若不存在,则执行步骤S403。
步骤S403:判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则执行步骤S408,若不为空,则执行步骤S404。
步骤S404:新建所述缓存会话对象RedisSession的属性,并执行步骤S408。
步骤S405:判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则执行步骤S407,若不为空,则执行步骤S406。
步骤S406:更新所述缓存会话对象RedisSession的属性,并执行步骤S408。
步骤S407:删除所述缓存会话对象RedisSession的属性。
步骤S408:返回接口函数Filter。
通过执行上述步骤S401-步骤S408对所述缓存会话对象RedisSession的属性和所述缓存会话对象RedisSession的属性值进行判断,执行新建所述缓存会话对象RedisSession的属性、更新所述缓存会话对象RedisSession的属性或删除所述缓存会话对象RedisSession的属性当中的至少一项操作。
需要说明的是,本发明部署安装时,将redis_session.jar部署在应用的WEB-INF/lib/目录下。
步骤S106:调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
需要说明的是,在调用缓存Redis助手类对应的相关函数过程中,将所述缓存会话对象RedisSession的属性进行序列化,将序列化后的所述接口函数Filter的会话对象的属性存储于Redis集群中。
需要说明的是,在redis_config.properties配置相关redis集群配置信息。
所述缓存会话对象RedisSession的属性存储于缓存Redis集群中的数据结构,如表1所示:
表1
Session | RedisSession | |
SessionId | Session.Id | Key值 |
创建时间 | Session.createTime | .createTime |
最后访问时间 | Session.lastAccessTime | .accessTime |
是否新建缓存会话对象 | Session.isNew | isNew() |
应用数据 | SessionId.dada(hashtable) | Key/value键值对 |
所述缓存会话对象RedisSession的属性是以序列化的形式存放在Redis集群中,原始会话对象属性和缓存会话对象RedisSession属性在缓存Redis数据结构中相对应。
本发明实施例通过上述公开的会话处理方法,基于会话过滤器的接口函数Filter获取用户请求,确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,返回所述接口函数Filter的所述缓存会话对象RedisSession,并确定返回所述接口函数Filter的会话对象的属性,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。通过本发明公开的方法,得到返回所述接口函数Filter的所述缓存会话对象RedisSession,再将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中,本发明实施例通过将所述缓存会话对象RedisSession的属性存储于所述缓存Redis集群,不仅能够实现会话信息持久化,还能快速读取会话信息。
基于上述本发明实施例公开的会话处理的方法,本发明实施例还对应公开了一种会话处理***,如图5所示,该会话处理***500主要包括:
获取单元501,用于将基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理;
替换单元502,用于确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,若需要,则将利用所述会话管理修饰类SessionRequestWrapper中的会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession,并将所述缓存会话对象RedisSession作为新会话对象返回所述接口函数Filter,若不需要,则将所述原始会话对象作为新会话对象返回所述接口函数Filter;
执行单元503,用于基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性;
存储单元504,用于调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
进一步的,所述预设的会话过滤器HttpServlet的接口函数Filter过程的获取单元501,如图6所示,包括:
指定模块601,用于指定会话过滤器HttpServlet的名字Filter-name和类名Filter-class;
配置模块602,用于在web.xml文件中,基于所述名字Filter-name和类名Filter-calss配置所述会话过滤器HttpServlet;
关联模块603,用于将所述会话过滤器HttpServlet和统一资源定位符URL进行关联,并建立所述会话过滤器HttpServlet的接口函数Filter。
进一步的,所述确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession的替换单元502,如图7所示,包括:
请求对应模块701,用于获取所述用户请求对应的原始会话对象。
第一判断模块702,用于判断所述原始会话对象是否存储SessionId,若存在,则执行第二判断模块,若不存在,则确定所述原始会话对象需要替换为缓存会话对象ResdisSession。
所述第二判断模块703,用于判断所述原始会话对象是否有效,若有效,则确定所述原始会话对象不需要进行替换,若无效,则确定所述原始会话对象需要替换为缓存会话对象RedisSession。
进一步的,所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回接口函数Filter的会话对象的属性的执行单元503,如图8所示,包括:
第三判断模块801,用于判断所述缓存会话对象RedisSession的属性是否为空,若为空,则返回接口函数Filter,若不为空,则执行第四判断模块802;
所述第四判断模块802,用于判断所述缓存会话对象RedisSession的属性是否存在,若存在,则执行第五判断模块803,若不存在,则执行第六判断模块804;
所述第五判断模块803,用于判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则执行删除所述缓存会话对象RedisSession的属性;若不为空,则执行更新所述缓存会话对象RedisSession的属性,并返回接口函数Filter;
所述第六判断模块804,用于判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则返回接口函数Filter;若不为空,则执行新建所述缓存会话对象RedisSession的属性,并返回接口函数Filter。
进一步的,所述调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中的存储单元504,如图9所示,包括:
调用模块901,用于调用所述缓存会话对象RedisSession类的所述会话对象操作函数中的缓存Redis助手类对应的相关函数;
序列化模块902,用于序列化所述缓存会话对象RedisSession的属性;
属性存储模块903,用于将所述序列化后的所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
上述本发明实施例公开的会话处理***中的各个单元和模块具体的原理和执行过程,与上述本发明实施例公开的会话处理的方法相同,可参见上述本发明实施例公开的会话处理方法中相应的部分,这里不再进行赘述。
基于上述本发明实施例公开的会话处理***,上述各个单元和模块可以通过一种由处理器和存储器构成的硬件设备实现。具体为:上述各个单元和模块作为程序单元存储于存储器中,由处理器执行存储在存储器中的上述程序单元来实现会话处理。
其中,处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现会话处理的方法。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (8)
1.一种会话处理方法,其特征在于,包括:
基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理;
确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,若需要,则将利用所述会话管理修饰类SessionRequestWrapper中的会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession,并返回所述接口函数Filter;
基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性;
调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中;
所述确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,包括:
获取所述用户请求对应的原始会话对象;
判断所述原始会话对象是否存在SessionId,若存在,则判断所述原始会话对象是否有效;
若有效,确定所述原始会话对象不需要进行替换;
若无效,确定所述原始会话对象需要替换为缓存会话对象RedisSession;
若不存在,则确定所述原始会话对象需要替换为缓存会话对象RedisSession。
2.根据权利要求1所述的方法,其特征在于,所述基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,包括:
指定会话过滤器HttpServlet的名字Filter-name和类名Filter-class;
在web.xml文件中,基于所述名字Filter-name和所述类名Filter-class配置所述会话过滤器HttpServlet;
将所述会话过滤器HttpServlet和统一资源定位符URL进行关联,并建立所述会话过滤器HttpServlet的接口函数Filter。
3.根据权利要求1所述的方法,其特征在于,所述基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性,包括:
基于所述缓存会话对象RedisSession类中的会话对象操作函数,判断所述缓存会话对象RedisSession的属性是否为空;
若为空,则返回接口函数Filter,若不为空,则判断所述缓存会话对象RedisSession的属性是否存在;
若存在,则判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则删除所述缓存会话对象RedisSession的属性,若不为空,则更新所述缓存会话对象RedisSession的属性,并返回接口函数Filter;
若不存在,则判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则返回接口函数Filter,若不为空,则新建所述缓存会话对象RedisSession的属性,并返回接口函数Filter。
4.根据权利要求1所述的方法,其特征在于,所述调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中,包括:
调用所述缓存会话对象RedisSession类的所述会话对象操作函数中的缓存Redis助手类对应的相关函数;
序列化所述缓存会话对象RedisSession的属性;
将所述序列化后的所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
5.一种会话处理***,其特征在于,包括:
获取单元,用于将基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest,并将所述用户请求HttpServletRequest调转至会话管理修饰类SessionRequestWrapper进行处理;
替换单元,用于确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession,若需要,则将利用所述会话管理修饰类SessionRequestWrapper中的会话对象操作函数getSession将所述原始会话对象替换为所述缓存会话对象RedisSession,并返回所述接口函数Filter;
执行单元,用于基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性;
存储单元,用于调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中;
所述用于确定是否需要将所述用户请求对应的原始会话对象替换为缓存会话对象RedisSession的替换单元,包括:
请求对应模块,用于获取所述用户请求对应的原始会话对象;
第一判断模块,用于判断所述原始会话对象是否存在SessionId,若存在,则执行第二判断模块,若不存在,则确定所述原始会话对象需要替换为缓存会话对象RedisSession;
第二判断模块,用于判断所述原始会话对象是否有效,若有效,则确定所述原始会话对象不需要进行替换,若无效,则确定所述原始会话对象需要替换为缓存会话对象RedisSession。
6.根据权利要求5所述的***,其特征在于,所述用于基于预设的会话过滤器HttpServlet的接口函数Filter获取用户请求HttpServletRequest的获取单元,包括:
指定模块,用于指定会话过滤器HttpServlet的名字Filter-name和类名Filter-class;
配置模块,用于在web.xml文件中,基于所述名字Filter-name和类名Filter-calss配置所述会话过滤器HttpServlet;
关联模块,用于将所述会话过滤器HttpServlet和统一资源定位符URL进行关联,并建立所述会话过滤器HttpServlet的接口函数Filter。
7.根据权利要求5所述的***,其特征在于,所述用于基于所述缓存会话对象RedisSession执行对应的会话对象操作函数,确定返回所述接口函数Filter的会话对象的属性的执行单元,包括:
第三判断模块,用于基于所述缓存会话对象RedisSession类中的会话对象操作函数,判断所述缓存会话对象RedisSession的属性是否为空,若为空,则返回接口函数Filter,若不为空,则执行第四判断模块;
所述第四判断模块,用于判断所述缓存会话对象RedisSession的属性是否存在,若存在,则执行第五判断模块,若不存在,则执行第六判断模块;
所述第五判断模块,用于判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则删除所述缓存会话对象RedisSession的属性,若不为空,则更新所述缓存会话对象RedisSession的属性,并返回接口函数Filter;
所述第六判断模块,用于判断所述缓存会话对象RedisSession的属性值是否为空,若为空,则返回接口函数Filter,若不为空,则新建所述缓存会话对象RedisSession的属性,并返回接口函数Filter。
8.根据权利要求5所述的***,其特征在于,所述用于调用所述会话对象操作函数中的缓存Redis助手类对应的相关函数,将所述缓存会话对象RedisSession的属性存储于缓存Redis集群中的存储单元,包括:
调用模块,用于调用所述缓存会话对象RedisSession类的所述会话对象操作函数中的缓存Redis助手类对应的相关函数;
序列化模块,用于序列化所述缓存会话对象RedisSession的属性;
属性存储模块,用于将所述序列化后的所述缓存会话对象RedisSession的属性存储于缓存Redis集群中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434590.3A CN109617953B (zh) | 2018-11-28 | 2018-11-28 | 一种会话处理方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434590.3A CN109617953B (zh) | 2018-11-28 | 2018-11-28 | 一种会话处理方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109617953A CN109617953A (zh) | 2019-04-12 |
CN109617953B true CN109617953B (zh) | 2021-08-31 |
Family
ID=66005720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811434590.3A Active CN109617953B (zh) | 2018-11-28 | 2018-11-28 | 一种会话处理方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109617953B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685304A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种共享session信息的方法和*** |
CN104580226A (zh) * | 2015-01-15 | 2015-04-29 | 上海瀚之友信息技术服务有限公司 | 一种共享会话数据的***和方法 |
CN106357778A (zh) * | 2016-09-27 | 2017-01-25 | 山东浪潮商用***有限公司 | 一种会话信息的共享方法、装置及*** |
CN106789872A (zh) * | 2016-11-11 | 2017-05-31 | 山东浪潮商用***有限公司 | 一种基于云服务的会话共享机制设计 |
CN106921721A (zh) * | 2015-12-28 | 2017-07-04 | 华为软件技术有限公司 | 一种服务器、会话管理方法和*** |
CN107395711A (zh) * | 2017-07-17 | 2017-11-24 | 中国农业银行股份有限公司 | 异构***会话存取方法及相关装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218428B2 (en) * | 2012-10-15 | 2015-12-22 | Dell Products, L.P. | Techniques for generating different sessions for multiple tabs of a single browser window |
US11050832B2 (en) * | 2017-03-29 | 2021-06-29 | Citrix Systems, Inc. | Maintaining a session across multiple web applications |
-
2018
- 2018-11-28 CN CN201811434590.3A patent/CN109617953B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685304A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种共享session信息的方法和*** |
CN104580226A (zh) * | 2015-01-15 | 2015-04-29 | 上海瀚之友信息技术服务有限公司 | 一种共享会话数据的***和方法 |
CN106921721A (zh) * | 2015-12-28 | 2017-07-04 | 华为软件技术有限公司 | 一种服务器、会话管理方法和*** |
CN106357778A (zh) * | 2016-09-27 | 2017-01-25 | 山东浪潮商用***有限公司 | 一种会话信息的共享方法、装置及*** |
CN106789872A (zh) * | 2016-11-11 | 2017-05-31 | 山东浪潮商用***有限公司 | 一种基于云服务的会话共享机制设计 |
CN107395711A (zh) * | 2017-07-17 | 2017-11-24 | 中国农业银行股份有限公司 | 异构***会话存取方法及相关装置 |
Non-Patent Citations (2)
Title |
---|
Redis-Based web server cluster session maintaining technology;Songhuan Li;《2017 13th International Conference on Natural Computation,Fuzzy Systems and Knowledge Discovery(ICNC-FSKD)》;20180625;全文 * |
基于Redis集群的分布式会话管理***的设计与实现;蒋亮亮;《中国科技论文在线》;20170104;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109617953A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110968603B (zh) | 一种数据访问方法及装置 | |
EP3035216A1 (en) | Cloud bursting a database | |
CN108255708B (zh) | 测试环境中访问生产文件的方法、装置、存储介质及设备 | |
TW201711432A (zh) | 對伺服器進行健康檢查的方法及設備 | |
CN104239156A (zh) | 一种外部服务的调用方法及*** | |
CN103647811A (zh) | 一种实现应用访问后台服务的方法和装置 | |
CN110764930A (zh) | 基于消息模式的请求或应答处理方法及装置 | |
CN109617953B (zh) | 一种会话处理方法和*** | |
US10152490B2 (en) | Sequential replication with limited number of objects | |
CN113077260A (zh) | 基于区块链的数据访问方法、装置及电子设备 | |
CN110413427B (zh) | 订阅数据拉取方法、装置、设备及存储介质 | |
CN110298031B (zh) | 一种词典服务***及模型版本一致性配送方法 | |
CN111159298A (zh) | 业务请求处理方法、装置、电子设备及存储介质 | |
CN112579639A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112527792A (zh) | 一种数据存储方法、装置、设备和存储介质 | |
CN115455121A (zh) | 一种实时可靠的数据同步传输方法、设备及介质 | |
CN110059075B (zh) | 一种数据库迁移的方法、装置、设备及计算机可读介质 | |
CN113867776A (zh) | 中台应用的发布方法、装置、电子设备和存储介质 | |
CN110321133B (zh) | H5应用部署方法及装置 | |
CN113867955A (zh) | 一种服务发现方法、装置、设备及存储介质 | |
CN109561123B (zh) | 令牌token的缓存方法及装置 | |
CN112579189A (zh) | 配置文件更新方法及装置 | |
CN110868333A (zh) | 一种用于网关的数据缓存方法及*** | |
CN116709280A (zh) | 蓝牙mesh网关的处理方法、装置及电子设备 | |
CN113326308B (zh) | 财务数据智能整合方法和装置、以及处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |