标准会话对象——StandardSession

Tomcat使用了一个StandardSession对象用来表示标准的会话结构,用来封装需要存储的状态信息。标准会话对象StandardSession实现了Session、Serializable、HttpSession等几个接口,为什么需要实现这几个接口呢?Session接口定义了tomcat内部用来操作会话的一些方法;Serializable则是序列化接口,实现它是为了方便传输及持久化;HTTPSession是Servlet规范中为会话操作而定义的一些方法,作为一个标准web容器实现它是必然的。另外还会存在一个StandardSessionFacade的外观类,外观设计模式相信大家都很熟悉了,前面的Request及Response也使用了同样的模式,都是出于安全考虑引入一个外观类,它可以把一些tomcat内部使用的方法屏蔽了,只暴露web应用层允许调用的一些方法。

 

一个最简单的标准会话应该包括id和Map<String, Object>结构的attribute,id用于表示会话编号,它必须是全局唯一的,attribute用于存储会话相关信息,以kv结构存储。另外还应该包括会话创建时间、事件监听器、提供web层面访问的外观类等等。

点击订购作者《Tomcat内核设计剖析》

时间: 2024-10-26 06:36:20

标准会话对象——StandardSession的相关文章

增量会话对象——DeltaSession

在集群环境中为了使集群中各个节点的会话状态都同步,同步操作是集群重点解决的问题,一般来说有两种同步策略,其一是每次同步都把整个会话对象传给集群中其他节点,其他节点更新整个会话对象:其二是对会话中增量修改的属性进行同步.这两种同步方案各有优缺点,整个会话对象同步策略实现过程比较简单方便,但会造成大量无效信息的传输.增量同步方式则不会传递无效的信息,但在实现上会比较复杂因为涉及到对会话属性操作过程的管理. 这节讨论的正是增量同步方式中涉及的会话对象DeltaSession,这个对象其实是对标准会话对

标准会话管理器——StandardManager

用于保存状态的会话对象已经有了,现在就需要一个管理器来管理所有会话,例如会话id生成.根据会话id找出对应的会话.对于过期的会话进行销毁等等操作.用一句话描述标准会话管理器:提供一个专门管理某个web应用所有会话的容器,并且会在web应用启动停止时刻进行会话重加载和持久化. 会话管理主要提供的功能包括会话ID生成器.后台处理(处理过期会话).持久化模块及会话集的维护.   首先看会话ID生成器,它负责为每个会话生成分配一个唯一标识,例如最终会生成类似"326257DA6DB76F8D2E38F2

主动退出群,别人重新拉进去之后发消息,会话对象的最新消息属性为nil

问题描述 自动登录app进来,然后退出一个群,别人重新拉他进去,然后发送消息,消息能接受到,在didUpdateConversationList中NSArray *allConversations = [[EaseMob sharedInstance].chatManager loadAllConversationsFromDatabaseWithAppend2Chat:NO];获取所有的会话列表,这个群的会话对象存在,可就是没有最新消息(拉成功之后发了一条消息),为nil:我关掉进程重新进去之

c++-在for_each调用标准库函数对象multiplies后为何下列输出没变

问题描述 在for_each调用标准库函数对象multiplies后为何下列输出没变 #include#include#include#includeusing namespace std::placeholders;using namespace std;int main(){ vectorvec; int i; while(cin>>i) vec.push_back(i); for_each(vec.begin()vec.end()bind(multiplies()_12));// for

使用标准库函数对象的例子

14.42 使用标准库函数对象及适配器定义一条表达式,令其 1 统计打于1024的值有多少个. 2 找到第一个不等于pooh的字符串 3 将所有的值乘以2 14.43 使用标准库函数对象判断一个给定的int值是否能被int容器中的所有元素整除 #include<iostream> #include<functional> #include<string> #include<vector> #include<algorithm> using nam

《C++语言基础》程序阅读——标准输入输出对象及文本文件

返回:贺老师课程教学链接 1.阅读并运行下面的示例程序,掌握标准输入输出流的控制 例1 #include <iostream> #include <math.h> using namespace std; int main() { float a,b,c,disc; cout<<"please input a,b,c:"; cin>>a>>b>>c; if (a==0) cerr<<"a is

发起会话对象的要求

问题描述 可以与非好友的用户进行聊天吗? 解决方案 可以的,只要拿到对方的环信ID即可发送消息.解决方案二:自己也试过了,与自己对话也是可以的,虽然这种情况应该避免.谢谢!

75篇关于Tomcat源码和机制的文章

整理下前面写过的75篇关于Tomcat源码和机制的文章 文章列表 如何设计一个Web容器 Web安全认证机制知多少 Tomcat集群实现源码级别剖析 Tomcat集群如何同步会话 从单机到集群会话的管理之集群模式一 从单机到集群会话的管理之集群模式二(更大的集群) Tomcat集群的failover机制 Tomcat集群应用部署的实现机制 Tomcat集群机制剖析及其生产部署选型 Tomcat如何实现WebSocket Tomcat如何实现Comet Tomcat怎么实现异步Servlet To

深入理解和改进JSP/Servlet会话管理机制

js|servlet 在Web服务器端编程中,会话状态管理是一个经常必须考虑的重要问题.本文分析JSP/Servlet的会话管理机制及其所面临的问题,然后提出了一种改进的会话管理方法. 一.Servlet的会话管理机制 根据设计,HTTP是一种无状态的协议.它意味着Web应用并不了解有关同一用户以前请求的信息.维持会话状态信息的方法之一是使用Servlet或者JSP容器提供的会话跟踪功能.Servlet API规范定义了一个简单的HttpSession接口,通过它我们可以方便地实现会话跟踪. H