使用异步servlet进行Hibernate getCurrentSession行为

时间:2012-04-11 19:30:38

标签: java hibernate servlets

Servlet 3.0异步api的内部指定servlet由多路复用器线程池处理。 getCurrentSession的行为是什么?是否会使会话保持打开状态,直到多路复用器线程由于空闲而被破坏?

1 个答案:

答案 0 :(得分:2)

Servlet请求一直由线程池处理,因此Servlet 3.0不会在这里引入任何新内容。事务提交后,从Session获取的线程绑定getCurrentSession()将被关闭(默认情况下),因此只要您正确实现事务管理,就不应该遇到任何线程池问题。

Servlet 3.0中的新功能是异步请求处理的不同阶段可以由不同的线程处理,因此在这些阶段中不能使用线程绑定的Session。但是,您仍然可以在单个处理阶段使用线程绑定的Session

此外,异步处理也会导致View模式中的Open Session出现问题。

但是,只要您不使用异步API,所有这些问题都无关紧要。