【发布时间】:2011-02-08 13:22:40
【问题描述】:
如何配置 Hibernate,以便每次调用 sessionFactory.openSession() 时,它都会从连接池中连接一个新连接?连接池由 Websphere Application Server 管理,是一个 JDBC 数据源。
谢谢
【问题讨论】:
-
这个要求的原因是什么?为了避免池中的陈旧连接?
-
我需要在 Web 应用程序的单个请求中打开 2 个会话。现在,两个会话似乎都在使用相同的连接,因为当第一个会话关闭时(有时手动调用 session.close()),另一个会话在尝试运行更多查询时会抛出“会话关闭”异常它。第二个会话由子线程打开,这意味着子线程即使在 (HTTP) 请求完成后也可以继续存在。
-
你能在问题仍然存在的地方显示一个简化的代码吗?我认为会话是 1:不是线程安全的,您不应该将会话对象传递给另一个线程。 2:线程绑定(取决于您使用的 tx mgnt 堆栈)。您是否在同一个线程中打开两个会话?如果是,请尝试在不同的线程中打开它们中的每一个
-
我在 2 个不同的线程中打开 2 个会话。
标签: java hibernate orm jdbc websphere