iteye_943 2012-09-20 17:42
浏览 250
已采纳

请问:如何动态切换数据源?

 

现在有一个需求是这样的:要求用户在访问系统(是一个JavaWeb项目)时,在登录的时候,可以选择要登入的数据库。

大概是这样:比如事先配置好数据库A,B,C(例如,开发库,测试库和生产库,数据不同但表结构一致)。当用户访问系统主页的时候,弹出窗口,让用户选择要连接哪个数据库。

当然不同用户之间的选择是不能相互影响的。(不能用户A连接了数据库A,又来了用户B连接了数据库B,之后用户A发现数据库变成B了)

请问,如何实现?

项目使用的技术:Spring3 + Hibernate3 + SpringMVC

 

一点点思路:利用Spring的AbstractRoutingDataSource来动态决定要连接的数据源,使用ThreadLocal将选择的数据源放入当前线程中。但实验并未成功,还是会相互影响。

求解啊~~~~

  • 写回答

2条回答 默认 最新

  • jinnianshilongnian 2012-09-20 17:54
    关注

    1、用户选择库后 将数据库key 如放入 session
    2、过滤器 拦截用户请求
    2.1 如果session中没有key 则将用户重定向到 选择库界面 选中
    2.2 否则绑定key到ThreadLocal变量
    2.3 请求结束 删除ThreadLocal
    3、AbstractRoutingDataSource 根据ThreadLocal选择库

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 asp.textbox后台赋值前端不能显示什么原因
  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误