如何创建一个可以在运行时处理数千个 jdbc 连接而不实现连接池的应用程序?据我所知,要建立连接池,我们需要用户名、密码和所需的dbinstance url,但这里所有这些都将在运行时提供以连接特定数据库,并且一次将有超过 1000 个用户连接到一组数据库。(内存密集型!)
所以通常它会是这样的:
用户:用户A,用户B,用户C......用户n
db:DB1、DB2、DB3...DBn
任何人都可以指导我如何完成这项任务吗?
我脑子里只有一件事,即为每个 session 创建单个连接,并在该用户特定需要的地方使用它。
我已经使用 Apache Commons DBCP2 进行连接池、MyBatis-Spring 实现、Spring 和 Vaadin 进行不同的应用程序,但不确定他们中是否有人会帮助我!
最佳答案
这是另一种方法:
Oracle 支持proxy authentication 。它会像这样工作:
- 为您的应用设置有限权限用户(例如
webgui
) - 连接到数据库
webgui
(带连接池) - 通过简单地尝试以真实用户身份进行连接(
JoeSmith
/JoeSmith
)来验证真实用户(例如password
),也许需要第二个连接 - 在第一个连接中将用户更改为
JoeSmith
(不确定oracle语法是什么,在postgres中它是SET ROLE) - 在数据库 session 结束时重置用户
EclipseLink 有一个postAcquireClientSession
方法,不确定MyBatis
如果 ORM 使用缓存,您可能必须删除它
关于java - 如何在 Web 应用程序(Spring/Vaadin)中为每个用户创建和维护一个 jdbc 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148589/