`
charyle
  • 浏览: 165831 次
  • 性别: Icon_minigender_1
  • 来自: 天蝎座
社区版块
存档分类
最新评论

ThreadLocal在Tomcat环境应用问题

 
阅读更多

ThreadLocal的使用在Tomcat的服务环境下要注意,并非每次web请求时候程序运行的ThreadLocal都是唯一的..ThreadLocal的绳命周期不等于一次Request的绳命周期..ThreadLocal与线程对象紧密绑定的,由于Tomcat使用了线程池,线程是可能存在复用情况...

1.ThreadLocal可以用于存放与请求无关对象,不能用来传递参数...

2.在所有使用线程池的地方都是如此

 

0
6
分享到:
评论
2 楼 zldhqq12345 2015-04-21  
嗯,说的很好,我正想证明这个道理呢,没想到你说了,准确的说如果每次请求的数据硬要放ThreadLocal中的话,应该确保响应返回之前清理掉ThreadLocal中的数据,下次请求来再重新set进去。或者如果不remove的话,确保下次来的时候覆盖也就是重新set再用
1 楼 王新春 2014-06-09  
这篇文章非常有价值,ThreadLocal 使用的边界就在此!

相关推荐

    运行在tomcat容器中的ThreadLocal容易产生的问题

    然而,在特定环境下,如Tomcat这样的Servlet容器中,不恰当使用ThreadLocal可能会导致一些问题。 首先,我们要理解Tomcat的工作原理。在处理Web请求时,Tomcat会创建一个线程池来处理来自客户端的HTTP请求。当一个...

    ThreadLocal 内存泄露的实例分析1

    总结:`ThreadLocal` 是一个强大的工具,但在使用时必须谨慎,尤其是在多线程环境中,如 Tomcat 这样的 Web 容器。如果不正确地管理 `ThreadLocal` 的生命周期,可能导致类加载器级别的内存泄漏。理解 `ThreadLocal`...

    Tomcat中一种半通用回显方法 - 先知社区1

    【标题】:“Tomcat中一种半通用回显方法 - 先知社区1”涉及的知识点主要围绕Java Web服务器Tomcat的内部工作原理以及利用...这种技术在某些场景下可以用于调试或测试,但在生产环境中需要谨慎使用,以免引发安全问题。

    tomcat中多线程对于servlet处理的4篇资料

    在Java Web开发中,Tomcat是一个广泛使用的开源应用服务器,尤其以其轻量级、高性能而著名。它基于Servlet和JSP规范,对于处理HTTP请求,Tomcat采用了多线程模型来提升性能。在这个主题中,我们将深入探讨"Tomcat中...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    本文将详细介绍如何利用 Eclipse Memory Analyzer (MAT) 工具来诊断并解决 Tomcat 服务器上的 Java 应用程序内存溢出问题。 #### 二、内存溢出的原因及处理思路 ##### 2.1 内存泄露 - **定义**:内存泄露是指不再...

    实例详解Java中ThreadLocal内存泄露

    在问题背景部分,我们看到一个示例,其中`LeakingServlet`类内部使用了一个静态的`MyThreadLocal`实例。每次`doGet`方法被调用时,`MyCounter`对象会被放入`ThreadLocal`中。如果线程持续存在,即使web应用被重新...

    基于全局储存的新思路 _ Tomcat的一种通用回显方法研究1

    为解决这一问题,文章引述了@kingkk师傅的研究,即通过反射修改Tomcat内部的控制变量,使请求处理过程中将Request和Response存储在ThreadLocal中,从而在反序列化时获取Response。 然而,这种方法受到Tomcat请求...

    第19章 Tomcat服务器和Servlet.pdf

    总结,本章主要介绍了Tomcat服务器、Servlet以及相关知识,包括它们的概念、安装与配置、执行原理以及在实际开发中需要注意的问题。通过学习,读者可以掌握搭建Web环境的基础知识,并能够开始编写和部署Servlet。

    hibernate中session的管理

    在传统的多线程Servlet环境下,如果将Session作为类变量存储,如上述例子中的`TestServlet`,则会面临线程安全问题。由于Servlet容器(如Tomcat)通常只创建一个Servlet实例供所有请求共享,每个线程在执行时可能会...

    Servlet线程安全问题.docx

    3. **ThreadLocal变量**:对于需要在多线程环境中保持独立状态的变量,可以使用`ThreadLocal`类来为每个线程创建独立的副本。 4. **使用无状态Servlet**:设计无状态的Servlet,即Servlet不持有任何可能被多个线程...

    通向架构师的道路

    在解决这些问题的过程中,读者将学会如何配置和管理集群环境。 #### 权限系统设计 对于权限系统的设计,作者提供了详细的案例分析,从用户需求出发,到ER图的设计,再到数据库表的设计,逐层深入,使读者能够掌握...

    走向架构师之路

    8. **ThreadLocal**:ThreadLocal是Java中用于线程局部变量的类,它可以为每个线程创建独立的变量副本,避免多线程环境下共享数据引发的并发问题。但在大型系统中,合理使用并注意内存泄漏是必要的。 9. **基于...

    Spring3.x企业应用开发实战(完整版) part1

    7.10.3 在Tomcat下的配置 7.10.4 在其他Web应用服务器下的配置 7.11 小结 第3篇 数据访问 第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 ...

    Spring.3.x企业应用开发实战(完整版).part2

    7.10.3 在Tomcat下的配置 7.10.4 在其他Web应用服务器下的配置 7.11 小结 第3篇 数据访问 第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 ...

    JAVA数据库连接池(C3P0,Druid,JNDI ,DBCP,Proxool,BoneCP)

    例如,Tomcat、JBoss等应用服务器都支持JNDI配置C3P0、DBCP等连接池。 4. DBCP(Database Connection Pool): DBCP是Apache Commons的一个项目,基于Jakarta-pool实现的数据库连接池。它简单易用,但相比于C3P0和...

    1工作临时-servlet 多线程问题

    标题 "1工作临时-servlet 多线程问题" 暗示了我们在讨论Servlet在处理多线程环境下的挑战和解决方案。Servlet是Java Web开发中用于处理HTTP请求的服务端组件,常常需要处理并发请求,因此多线程是其核心特性之一。 ...

    SpringBoot+MySQL+Redis+MyBatis实现的校园论坛项目源代码+详细使用说明文档

    使用拦截器拦截用户请求,将用户信息绑定在ThreadLocal上 构建Trie数据结构,实现对发表帖子评论的敏感词过滤 支持对帖子评论,也支持对评论进行回复 利用Redis的zset并结合Redis实现点赞关注的功能 用户点赞关注后...

    中间件内存马注入&冰蝎连接(附更改部分代码)1

    3. Filter注入实现:通过PageContext、MBean或ThreadLocal等方法获取Context,进而实现在过滤器中注入内存马。 最后,虽然没有详细展开,但文章也提到了Weblogic中间件的内存马注入技术,Weblogic是另一款广泛应用...

    JavaWeb开发小秘籍

    你会学习到Web应用如何在不同的运行环境下部署,如Tomcat、Jetty等,并理解Web应用目录结构和web.xml配置文件的作用。 2. **第2章Servlet**:Servlet是JavaWeb开发的核心部分,用于扩展Web服务器的功能。这一章将...

    Spring事务管理高级应用难点剖析(4)

    在Web应用环境中,由于容器(如Tomcat)为每个HTTP请求创建独立的线程,因此Spring容器中的Bean,包括DAO和服务层(Service)都将运行在多线程环境中。通常,Spring的Bean被配置为单例(singleton),这意味着它们在...

Global site tag (gtag.js) - Google Analytics