动态修改数据源配置
来源:互联网 发布:网络创业靠谱吗 编辑:程序博客网 时间:2024/05/01 04:43
因项目需要能动态修改数据源的配置,及修改后不用重启整个应用。使用的数据源是apache的BasicDataSource,网上千篇一律的是如下实现:
BasicDataSource bds=getDataSource();
try{
bds.close();
}
catch(Exception e){
e.printStackTrace();
}
bds.setUsername("sa");
bds.setPassword("admin");
还说要先关闭,再修改配置才能生效。
这样的代码根本就实现不了所说的功能,直接运行出错。连接池关闭后,就无法使用了。本身也没有open,reopen之类的方法。
也有说C3P0支持热修改,但本身好像有bug,容易出错死锁错误。也就没有去研究到底支持不。
BasicDataSource 的close方法其实只设置了一个标识变量:closed,标记为关闭就取不到连接,要是能修改该标识为非关闭,就可以继续使用了。
所以实现的思路是:先关闭,再修改配置,再打开标识。问题是BasicDataSource并没有这样的接口提供出来,幸运的是,BasicDataSource中的
closed属性是protected,也就是我们可以在子类中访问到这个属性,也就可以进行修改了。
所以只要自定义一个类继承于BasicDataSource,提供如下方法即可:
public void open(){
this.closed=false;
}
当然配置文件中使用的数据源的类名就需要改为这个自定义类了。
- 动态修改数据源配置
- 动态修改JDBC数据源配置
- 配置或修改数据源
- 动态配置ODBC数据源
- 动态配置ODBC数据源
- 动态配置odbc数据源
- ODBC 动态配置数据源
- birt 配置动态数据源
- SSH配置动态数据源
- zookeeper 数据源动态配置
- spring配置动态数据源
- Spring 动态数据源配置
- 动态数据源配置
- 修改注册表动态加载数据源
- spring + hibernate动态数据源配置
- spring + hibernate动态数据源配置
- Spring+mybatis配置动态数据源
- 动态配置数据源(DSN)
- EXTJS4.0+MVC表格基础实例(分页查询,修改和删除)
- Java String\StringBuffer\Stringbuilder
- SQL Server 2005用存储过程从服务器中导出数据到本地自己的数据库
- 银行业务调度系统
- java final关键字
- 动态修改数据源配置
- http://m2eclipse.sonatype.org/sites/m2e地址更换了
- MultiByteToWideChar和WideCharToMultiByte用法详解
- HttpClient 学习整理
- velocity中的velocityCounter不起作用的原因
- iOS调试技巧
- DVB-T RS编码
- [树状数组求第K大][BZOJ 3173][TJOI 2013]最长上升子序列
- WEB测试--WEB安全