- 6
- 0
- 约8.61千字
- 约 18页
- 2017-07-06 发布于河南
- 举报
JSP Session管理(ThreadLocal)(国外英文资料)
JSP Session管理(ThreadLocal)
JSP会话管理(ThreadLocal)
在各种会话管理方案中,模式得到了大量使用ThreadLocal是ThreadLocal。
java中一种较为特殊的线程绑定机制。通过ThreadLocal存取的数据,总是与当前线程相关,
也就是说,JVM为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出
现的并发访问问题提供了一种隔离机制。
首先,我们需要知道,SessionFactory负责创建会话,SessionFactory是线程
安全的,多个并发线程可以同时访问一个SessionFactory并从中获取实例而会话。
会议并非线程安全,也就是说,如果多个线程同时使用一个会话实例进行数据存取,
则将会导致数据存取逻辑混乱下面是一个典型的servlet,我们试图通过一个类会话。
变量会话实现会话的重用,以避免每次操作都要重新创建:
公共课testservlet扩展HttpServlet {
私有会话;
public void doGet(HttpServletRequest请求,
httpservletresponse响应)
抛出IOException {返回,
会议= getsession();
dosomething();
flush()会话;
}
dosomething() { public void
/基于会话的存取操作
}
}
代码看上去正确无误,甚至在我们单机测试的时候可能也不会发生什么问题,但这样的代
Hibernate开发指南1版
2004年9月2日这么多开源项目。为什么不打开你们的文件呢?
码一旦编译部署到实际运行环境中,接踵而来的莫名其妙的错误很可能会使得我们摸不找头脑。
问题出在哪里?
首先,运行是多线程的而应用服务器并不会为每个线程都创建一个Servlet Servlet,
实例,也就是说,testservlet在应用服务器中只有一个实例(在Tomcat中是这样,其他的
应用服务器可能有不同的实现),而这个实例会被许多个线程并发调用,doGet方法也将被不
同的线程反复调用,可想而知,每次调用doGet方法,这个唯一的testservlet实例的
会议变量都会被重置,线程一的运行过程中,其他的线程如果也被执行,那么会话
的引用将发生改变,之后线程一再调用会话,会话与其之前所用的可能此时的
会议就不再一致,显然,错误也就不期而至。
的出现ThreadLocal,使得这个问题迎刃而解。
我们对上面的例子进行一些小小的修改:
公共课testservlet扩展HttpServlet {
私人ThreadLocal localsession =新threadlocal();
public void doGet(HttpServletRequest请求,
httpservletresponse响应)
抛出IOException {返回,
localsession集(getsession());
dosomething();
flush()会话;
}
dosomething() { public void
会话的会话(session)localsession get() =;
/基于会话的存取操作
}
}
可以看到,localsession是一个ThreadLocal类型的对象,在doGet方法中,我们
通过其集方法将获取的会话实例保存,而在做方法中,通过得到方法取
出会话实例。
这也就是ThreadLocal的独特之处,它会为每个线程维护一个私有的变量空间。实际上,
其实现原理是在JVM中维护一个地图,这个地图的关键就是当前的线程对象,而价值则是
线程通过ThreadLocal。集方法保存的对象实例。当线程调用得到方法时ThreadLocal,
会根据当前线程对象的引用ThreadLocal,取出地图中对应的对象返回。
这样,ThreadLocal通过以各个线程对象的引用作为区分,从而将不同线程的变量隔离开
来。
Hibernate官方开发手册的示例中,提供了一个通过ThreadLocal维护会话的好
榜样:
公共类HibernateUtil {
私有静态SessionFactory SessionFactory;
静态{
尝试{
//创建SessionFactory
SessionFactory =新
configuration()。configure()。buildsessionfactory();
} catch(更改前){
抛出RuntimeException(
“配置问题:如“+ getmessage(),
前任
);
}
}
public static final ThreadLocal会话=新threadlocal();
公共静态会
您可能关注的文档
- 1.恒温槽测试思考题答案2(国外英文资料).doc
- 100多份品管试卷及答案——资料包(151个DOC)实务02(国外英文资料).doc
- 100个即将消失的地方(国外英文资料).doc
- 108种创业赚钱方法(一)(国外英文资料).doc
- 10年会考说明(哲学)(国外英文资料).doc
- 10年后,什么东西最便宜(国外英文资料).doc
- 11地理(国外英文资料).doc
- 10种不健康心理(国外英文资料).doc
- 11教育心理学大纲(国外英文资料).doc
- 1211灭火器报废规定报批稿(国外英文资料).doc
- 2024年山东建筑大学马克思主义基本原理概论期末考试笔试题库.docx
- 小学语文五年级多音字大全(高频必考+易混辨析+语境组词).docx
- 小学语文三年级多音字大全(课文同步+注音造句).docx
- 广西壮族自治区名校协作体2025-2026学年高二上学期12月月考英语(解析版).docx
- 湖北省武汉市第二中学2025-2026学年高一上学期周练五英语Word版含解析.docx
- 基于高光谱技术冷鲜羊肉剪切力预测模型的构建.docx
- 绿色碳点和红色碳点的制备及其荧光共振能量转移性能研究.doc
- 绿色建材与传统建材的环境效益对比及经济性评价.docx
- 民族歌剧选段《再看一眼亲人》作品分析与演唱探究.docx
- 吗啡生物碱的催化不对称合成研究.docx
最近下载
- 解读【上海市住宅物业管理规定】.ppt VIP
- 风力发电场项目可行性研究报告编写规程.pdf VIP
- GB50073-2001洁净厂房设计规范.docx VIP
- STC250T5-1(25t、43.5m)(三一重工)汽车起重机使用说明书.pdf VIP
- 淘宝十年产品事 电子书下载.pdf VIP
- 开放式整合网络CC-Link IE TSN对应产品样本-1910.pdf VIP
- 专题1.3 直角三角形(含答案析)(八年级数学下册单元题型练习(基础题型+强化题型)(北师大版)).docx VIP
- 单招考试英语+语文卷(含答案) (8).docx VIP
- STC1000C7-8(25款)100t汽车起重机.pdf VIP
- 07SS604 建筑管道直饮水工程--.pdf VIP
原创力文档

文档评论(0)