Mat*_*ley 4 java servlets servlet-filters
我看到很多关于setAttribute和getAttribute方法是否HttpSession都是原子的问题.他们不是.但是,request.getSession(true)每个客户实际调用原子?
例如,如果你有一个servlet过滤器和一个客户端发出两个同时到达一行的同时调用request.getSession(true)会返回相同的会话对象吗?我假设这样的东西会特定于容器吗?或者您是否为getSession每个请求客户端提供了同步呼叫.
不它不是.
Servlet Spec说......
2.3.3.4线程安全除了startAsync和complete方法之外,请求和响应对象的实现不保证是线程安全的.这意味着它们应该只在请求处理线程的范围内使用,或者应用程序必须确保对请求和响应对象的访问是线程安全的.
如果应用程序创建的线程使用容器管理的对象(例如请求或响应对象),则必须仅在对象的生命周期内访问这些对象,如3.10和5.6节中所定义.要知道,比startAsync,并完成其他的方法,请求和响应的对象不是线程safe.If这些对象在多线程被访问,访问应该是同步或者通过包装来完成添加的线程安全,对实例,同步方法的调用以访问请求属性,或者在线程内使用本地输出流作为响应对象.
对你的问题? 是否有可能对getSession的两个并发调用返回不同的HttpSession对象,即使它们来自同一个客户端? 答案是"是的,
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |