java - 如何在 Web 应用程序(Spring/Vaadin)中为每个用户创建和维护一个 jdbc 连接?

标签 java spring mybatis apache-commons-dbcp

如何创建一个可以在运行时处理数千个 jdbc 连接而不实现连接池的应用程序?据我所知,要建立连接池,我们需要用户名密码和所需的dbinstance url,但这里所有这些都将在运行时提供以连接特定数据库,并且一次将有超过 1000 个用户连接到一组数据库。(内存密集型!)
所以通常它会是这样的:

用户:用户A,用户B,用户C......用户n
db:DB1、DB2、DB3...DBn

任何人都可以指导我如何完成这项任务吗?
我脑子里只有一件事,即为每个 session 创建单个连接,并在该用户特定需要的地方使用它。

我已经使用 Apache Commons DBCP2 进行连接池、MyBatis-Spring 实现、Spring 和 Vaadin 进行不同的应用程序,但不确定他们中是否有人会帮助我!

最佳答案

这是另一种方法:

Oracle 支持proxy authentication 。它会像这样工作:

  1. 为您的应用设置有限权限用户(例如 webgui )
  2. 连接到数据库 webgui (带连接池)
  3. 通过简单地尝试以真实用户身份进行连接(JoeSmith/JoeSmith)来验证真实用户(例如 password ),也许需要第二个连接
  4. 在第一个连接中将用户更改为 JoeSmith (不确定oracle语法是什么,在postgres中它是SET ROLE)
  5. 在数据库 session 结束时重置用户

EclipseLink 有一个postAcquireClientSession方法,不确定MyBatis

如果 ORM 使用缓存,您可能必须删除它

关于java - 如何在 Web 应用程序(Spring/Vaadin)中为每个用户创建和维护一个 jdbc 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148589/

相关文章:

java - Spring:取消一个@Scheduled注解的任务

java - MongoDB Spring - 未定义名为 'mongoTemplate' 的 bean

java - MyBatis嵌套集合查询导致重复错误结果

Java Swing,从系统托盘恢复在 Linux 中不起作用

java - 调度作业在集群上执行两次

java - spring mvc 防止直接访问方法

java mybatis isTraceEnabled()Z错误

java - MyBatis ManyToOne 和 OneToMany 映射

java - XML 解析器在 java 中获取名称和值对的结果

java - 配置文件不存在时的默认 Spring bean