我想为 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/