Servlet 3.0 异步 API 的内部指定 Servlet 由线程多路复用器池处理。 getCurrentSession 的行为是什么?它会让 session 保持打开状态,直到多路复用器线程因空闲而被销毁吗?
最佳答案
Servlet 请求始终由线程池处理,因此 Servlet 3.0 在此没有引入任何新内容。从 getCurrentSession()
获取的线程绑定(bind) Session
在事务提交后会关闭(默认情况下),因此只要正确操作,线程池就不会有任何问题实现事务管理。
Servlet 3.0 中的新功能是异步请求处理的不同阶段可以由不同的线程处理,因此您不能在这些阶段中使用线程绑定(bind)的 Session
。但是,您仍然可以在单个处理阶段内使用线程绑定(bind)的 Session
。
异步处理也给 View 模式中的“打开 session ”带来了问题。
但是,只要您不使用异步 API,所有这些问题都无关紧要。
关于java - Hibernate getCurrentSession 与异步 servlet 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112639/