spring配置jndi不能释放数据库连接

2025-03-22 21:08:08
推荐回答(1个)
回答1:

池化连接本身是不会立即断开与数据库服务器的物理连接,这是正常的,不过我们的程序或容器(比如 Spring, EJB)应该跟踪程序是否没有正确的完成当前绑定在这个连接上的事务(提交和回滚都算是完成了事务),在未正确完成事务时要报告错误。

J2EE 规范中是有些要求的,比如一个完整的发起自容器(比如 web 程序或 ejb 程序)内的请求在完成后应该把它的事务也同时完成并逻辑上关闭连接(池化连接中物理连接一般不会立即关闭,这是由服务器的资源管理器来决定的),所以这时我们的程序正确的调用了 connection.close() (这是逻辑连接),但通过进程观察 netstat 依然能看到应用服务器还连接在数据库上面(这时物理连接),这个逻辑连接这时相当于时分复用一个物理连接。