java - Threadlocal 用于初始化 java web 项目中的变量

标签 java servlets

我想为 HttpServletRequest 初始化一个变量。为此,我想检查请求是否已经初始化了变量。我正在使用 tomcat 服务器

例如: HttpServletRequest 有很多 DBoperations 需要执行。那么我可以对整个 HttpServletRequest 使用一个连接吗?还为不同的请求分配不同的连接。我可以使用 Threadlocal 来执行此操作吗?

最佳答案

是的,你可以做到。 Tomcat 或 Jetty 等 Java Web 服务器是线程池服务器,这意味着每个 HttpServletRequest 都由服务器线程池中的线程处理。

使用数据库连接时,应用两种常见模式:每个操作连接和每个请求/线程连接。首选并推荐后者,采用ThreadLocal来实现,每个线程拥有一个连接来执行一系列操作。

事实上,像Hibernate这样的框架使用ThreadLocal (ThreadLocalSessionContext)来实现connection/session-per-request/thread。 您可以从这里阅读更多信息http://www.ibm.com/developerworks/library/j-threads3/ .

更新: 您只需创建一个连接并将其存储在共享的 ThreadLocal 对象中,然后从中获取连接(不与其他线程共享)以用于线程/请求内的所有操作,如上面链接中的“ list 3”所示。 希望这有帮助!

关于java - Threadlocal 用于初始化 java web 项目中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578349/

相关文章:

java - 检查 Elastic Beanstalk JVM 堆的最佳方法

java - Spring中什么时候创建对象?

java - 在哪里存储 Servlet 的单例?

java - 以编程方式从我的 java webapp 中读取静态资源

jquery - Select2 不起作用,始终显示 "No results found"

Java存储过程: OUT params

java - PrintStream 未创建文件?

eclipse - Apache Tomcat 7.0 无法与 eclipse EE juno 版本一起正常工作

java - 从两个bean获取数据到jsp

java - 如何确定OGG文件的长度