java - Hibernate getCurrentSession 与异步 servlet 的行为

标签 java hibernate servlets

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/

相关文章:

java - 附件字体和图标大小

java - 比较 float 错误

java - 使用 Hibernate 选择最常见的值

java - storeedProcedure.registerStoredProcedureParameter,带 out Parameter ref 光标,带 Jpa Eclipse Link

java - Grails在同一域类中具有hasOne属性

java - 为什么这个 java servlet 不起作用 [OpenShift+Tomact6+Git+Jboss]

tomcat - 将AppFuse应用程序从Tomcat 7迁移到Jboss EAP 6.1

java - 如何在 JavaFX 中获取舞台的窗口句柄 (hWnd)?

java - 使用 @OneToMany 或 @ManyToMany 定位未映射的类

java - 从 servlet 调用 Java 函数,函数不会执行