session管理3

问题描述

可以看到,localSession是一个ThreadLocal类型的对象,在doGet方法中,我们通过其set方法将获取的session实例保存,而在doSomething方法中,通过get方法取出session实例。这也就是ThreadLocal的独特之处,它会为每个线程维护一个私有的变量空间。实际上,其实现原理是在JVM中维护一个Map,这个Map的key就是当前的线程对象,而value则是线程通过ThreadLocal.set方法保存的对象实例。当线程调用ThreadLocal.get方法时,ThreadLocal会根据当前线程对象的引用,取出Map中对应的对象返回。这样,ThreadLocal通过以各个线程对象的引用作为区分,从而将不同线程的变量隔离开来。回到上面的例子,通过应用ThreadLocal机制,线程A的session实例只能为线程A所用,同样,其他线程的session实例也各自从属于自己的线程。这样,我们就实现了线程安全的Session共享机制。Hibernate官方开发手册的示例中,提供了一个通过ThreadLocal维护Session的好榜样:publicclassHibernateUtil{privatestaticSessionFactorysessionFactory;static{try{//CreatetheSessionFactorysessionFactory=newConfiguration().configure().buildSessionFactory();}catch(HibernateExceptionex){thrownewRuntimeException("Configurationproblem:"+ex.getMessage(),ex);}}publicstaticfinalThreadLocalsession=newThreadLocal();publicstaticSessioncurrentSession()throwsHibernateException{Sessions=(Session)session.get();//OpenanewSession,ifthisThreadhasnoneyetif(s==null){s=sessionFactory.openSession();session.set(s);}returns;}publicstaticvoidcloseSession()throwsHibernateException{Sessions=(Session)session.get();session.set(null);if(s!=null)s.close();}}

时间: 2024-08-01 08:48:17

session管理3的相关文章

shiro和spring集成时session管理器超时时间问题

问题描述 shiro和spring集成时session管理器超时时间问题 这是我的配置文件,我配置了并发人数控制和动态权限过滤,然后session超时时间这里也是配置了的,然后并没有什么鸟用,在登录以后获取超时时间也是正常的,但还是1分钟就过期了. <?xml version="1.0" encoding="UTF-8"?> xmlns:util="http://www.springframework.org/schema/util"

负载平衡环境下的SESSION管理

session|session 创建交互式web 页面时最大的挑战之一是维持用户的状态,一个站点也许想记住你是谁.在n页之前你点击了什么.在这最后一次做了些什么.现在马上要向你显示什么.实现这些功能的途径有许多,如查询字符串.提交表单或cookies,最强大的一种是ASP的Session 对象.  原文出处:http://www.asptoday.com/articles/20000118.htm      当用户第一次到达某站点,他/她被给予一个HTTP cookie格式的SessionID

WebService大讲堂之Axis2(6):跨服务会话(Session)管理

在<WebService大讲堂之Axis2(5):会话(Session)管理>一文中介绍了如何使用Axis2来管理同一 个服务的会话,但对于一个复杂的系统,不可能只有一个WebService服务,例如,至少会有一个管理用户 的WebService(用户登录和注册)以及处理业务的WebService.象这种情况,就必须在多个WebService服 务之间共享会话状态,也称为跨服务会话(Session)管理.实现跨服务会话管理与实现同一个服务的会话 管理的步骤类似,但仍然有一些差别,实现跨服务会话

WCF后续之旅(9):通过WCF的双向通信实现Session管理[Part I]

我们都知道,WCF支持Duplex的消息交换模式,它允许在service的执行过程中实现对client的回调.WCF这种双向通信的方式是我们可以以Event Broker或者订阅/发布的方式来定义和调用WCF Service.今天我们就给大家一个具体的例子:通过WCF的duplex communication方式现在Session管理. 1.Session 管理提供的具体功能 我们的例子实现了下面一些Session Management相关的功能: Start/End Session:可以调用s

《Servlet和JSP学习指南》一第2章 Session管理 2.1 网址重写

第2章 Session管理 Session管理(或Session追踪)是Web应用程序开发中一个非常重要的主题.这是因为Web语言HTTP是无状态的.在默认情况下,Web服务器不知道一个HTTP请求是来自初次用户,还是来自之前已经访问过的用户. 例如,webmail应用程序要求其用户在查看邮件之前要先登录.但是,一旦用户输入正确的用户名和密码,用户在访问应用程序的其他部分时,就不应该再次提示他们登录.应用程序需要记住哪些用户已经登录成功.换句话说,它必须能够管理用户Session. 本章讲解可以

WCF后续之旅(9): 通过WCF双向通信实现Session管理[下篇]

一.Session Management Service的实现 现在我们来看看Session Management真正的实现,和我以前的例子不同,我不是把所有的实现都写在WCF service上,而是定义了另一个class来实现所有的业务逻辑:SessionManager.我们分析一下具体的实现逻辑. 1: namespace Artech.SessionManagement.Service 2: { 3: public static class SessionManager 4: { 5: p

使用Memcached Session Manager扩展Session管理

Tomcat的session管理 在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中. 然后再从request获取session的时候,如果存在sessionId那么就根据Id从session池中获取session, 如果sessionId不存在或者session失效,那么则新建session并且将session信息放入session池,供下次使用. session replication和session sticky session是

tomcat8 0 ...-tomcat8下redis的session管理

问题描述 tomcat8下redis的session管理 求在tomcat8下,使用redis的详细管理配置与说明,尤其是jar包 解决方案 tomcat 下的session 管理Tomcat Session的管理Tomcat的Session管理 解决方案二: 帮顶一下,懂的人回答 解决方案三: 帮顶一下,懂的人回答

WCF后续之旅(9):通过WCF的双向通信实现Session管理[上篇]

我们都知道,WCF支持Duplex的消息交换模式,它允许在service的执行过程中实现对client的回调.WCF这种双向通信的方式是我们可以以Event Broker或者订阅/发布的方式来定义和调用WCF Service.今天我们就给大家一个具体的例子:通过WCF的duplex communication方式现在Session管理. 一.Session 管理提供的具体功能 我们的例子实现了下面一些Session Management相关的功能: Start/End Session:可以调用s

Tomcat的Session管理机制

Session和Cookie请求的过程 Http连接本身是无状态的,即前一次发起的连接跟后一次没有任何关系,是属于两次独立的连接请求, 但是互联网访问基本上都是需要有状态的,即服务器需要知道两次连接请求是不是同一个人访问的. JSESSIONID是一个唯一标识号,用来标识服务器端的Session,也用来标识客户端的Cookie,客户端和服务器端通过这个JSESSIONID来一一对应. 客户端第一次请求到服务器连接,这个连接是没有附带任何东西的,没有Cookie,没有JSESSIONID. 服务器