我想初始化HttpServletRequest
的变量。因为我想检查请求是否已经初始化该变量。我正在使用tomcat
服务器
例如:
HttpServletRequest
要执行DBoperations
次connection
次。我可以使用一个HttpServletRequest
作为整个Threadlocal
。还为不同的请求分配不同的连接。我可以使用var test = "GP0|#9d72d96c-407f-4e45-b2e6-9361faf5808a;L0|#09d72d96c-407f-4e45-b2e6-9361faf5808a|Travel;GTSet|#ac96f075-b7d2-4e90-8dc2-da8875f395fc";
var test2 = "GP0|#15a06b93-f7aa-4dda-b0d6-7bf2d2905f27;L0|#015a06b93-f7aa-4dda-b0d6-7bf2d2905f27|Special Event;GTSet|#ac96f075-b7d2-4e90-8dc2-da8875f395fc";
执行此操作吗?
答案 0 :(得分:1)
是的,你可以这样做。像Tomcat或Jetty这样的Java Web服务器是线程池服务器,这意味着每个HttpServletRequest
都由来自服务器线程池的线程处理。
使用数据库连接时,应用了两种常见模式:每个操作的连接和每个请求/线程的连接。后者是首选和推荐的,ThreadLocal
用于实现,每个线程拥有一个连接来执行一系列操作。
实际上,像Hibernate这样的框架使用ThreadLocal
(ThreadLocalSessionContext
)来实现每个请求/线程的连接/会话。
您可以在此处阅读更多内容http://www.ibm.com/developerworks/library/j-threads3/。
更新: 您只需创建一个连接并将其存储在共享的ThreadLocal对象中,然后从中获取连接(不与其他线程共享)以用于线程/请求中的所有操作,如清单3"从上面的链接。 希望这有帮助!