我按照下面的文章创建了动态JDBC连接。
How to support dynamic JDBC credentials
我能够正确地执行此操作并且当用户尝试使用其凭据登录成功创建的JDBC连接时。
但我也想在用户注销时终止这些连接。我在注销期间执行session.invalidate()但它没有终止数据库连接。
即使在取消部署应用程序后,也会保留动态连接。只有在我停止Web逻辑服务器时才会删除它们。 为应用程序模块设置的超时不适用于这些连接。如果在注销期间有办法关闭这些动态JDBC连接,请帮助我。
我正在使用JDeveloper 12.2.1
答案 0 :(得分:1)
在ADF中,您不直接管理数据库连接。应用程序模块通过引用Application Server提供的数据库连接池JNDI名称来管理要使用的连接。
由于创建db conn的成本很高,因此App服务器(例如WebLogic)在DB conn池中维护一组数据库连接。当ADF应用程序模块需要连接时,将从此池中为其提供一个连接。当用户结束(ADF)会话时,连接将返回到池以供另一个会话(重新)使用。您可能希望以解释此问题的文档开始here。 WLS文档将介绍如何管理db conn池。
底线是您不应该在ADF应用程序中以编程方式打开/关闭数据库连接。