来自HttpSessionListener的sessionCreated()是否自动与request.getSession()同步?

时间:2017-02-05 12:11:40

标签: java multithreading session servlets listener

来自sessionCreated()的{​​{1}}方法是否会自动与HttpSessionListener通话同步?特别是,我想知道在request.getSession()方法中设置会话属性是否可以线程安全,并在servlet中检索sessionCreated()的属性? 例如,具有

的线程安全性
request.getSession().getAttribute("something")

@Override public void sessionCreated(HttpSessionEvent se) { se.getSession().setAttribute("something", new Something()); } 中,并且

HttpSessionListener
<{1>} Something something = (Something) request.getSession().getAttribute("something"); synchronized(something){ // do anything with this "something" object } doGet()方法内部我关心的一点是,如果此HttpServlet?方法未与sessionCreated()自动同步requested.getSession()返回的值getAttribute("something") 1}}可以是null

1 个答案:

答案 0 :(得分:0)

这两个方法调用至少在Tomcat中在同一线程中执行。我使用log4j通过打印线程ID对其进行了检查。因此,至少在Tomcat中,上述方法调用的组合是线程安全的。