怎么样做到配置属性可以动态更改,而不用重启服务器密码已更改

&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!动态切换数据库不用重启服务器 - 八戒你瘦了 - ITeye技术网站
做一个项目可能会用到多个数据库开发一套,测试一套遇到问题可能连接数据库时要换来换去,要去改配置重启 我觉得十分麻烦,所以自己做了一个动态切换数据库的空能 先上代码
public class MultiDataSourceAction extends BaseAction {
public void setUrl(String url){
public String getUrl(){
* 切换数据库
* @throws Exception
public String changeDataSource() throws Exception{
this.addActionMessage("连接成功");
String beanName="dataSource";//默认105 要与spring配置文件配置bean id相同
if("11".equals(url)){
beanName="dataSource11";
}else if ("116".equals(url)) {
beanName="dataSource116";
TabDataSource.getInstance().changeDataSource(beanName);
return "success";
}这是action代码& 需要从页面传过来一个区分那个数据库的标识
public class TabDataSource{
public static TabDataSource NEWSOURCE=
public SessionF
public static TabDataSource getInstance() throws Exception{
if(NEWSOURCE==null)
NEWSOURCE=new TabDataSource();
SessionManager.releaseSession();//释放登录用户让其好重新登录 SessionManager是一个session管理,关于session资源的持久化应该统一在此类 就不上代码了
return NEWSOURCE;
//new Configuration().configure().buildSessionFactory();
public void changeDataSource(String beanName)throws Exception{
//清除所有二级缓存 SourceTemplate是一个获得各种静态资源的类 大伙应该能想得到
factory=(SessionFactory)SourceTemplate.getSpringContextInstance().getBean("sessionFactory");
factory.evictQueries();
//切换数据源
HotSwappableTargetSource swapper=(HotSwappableTargetSource)SourceTemplate.getSpringContextInstance().getBean("swappableDataSource");
DataSource newDataSource=(DataSource)SourceTemplate.getSpringContextInstance().getBean(beanName);
swapper.swap(newDataSource);
// 重新加载菜单
//到这切换数据源算是完成了 下面的主要是我的项目里 在服务器启动的时候就初始化了一个servlet用来加载菜单所以要重新加载
ICache cache=(ICache)SourceTemplate.getSpringContextInstance().getBean("BaseSystemCache");
cache.getCachMap().clear();
cache.cacheInit();
CacheManager.addCache(cache.getCachName(), cache);
切换数据源在上面完成 下面看配置
&bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&
&property name="dataSource"&
&ref local="swappable"/&
&/property&....
&bean id="swappable" class="org.springframework.aop.framework.ProxyFactoryBean"&
&property name="targetSource"&
&ref local="swappableDataSource"/&
&/property&
&bean id="swappableDataSource" class="org.springframework.aop.target.HotSwappableTargetSource"&
&constructor-arg&
&ref local="dataSource"/&
&/constructor-arg&
&bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations"&
SqlMapConfig.properties
&/property&
&bean id="dataSource"
class="mons.dbcp.BasicDataSource" destroy-method="close"&
&property name="driverClassName"&
&value&${jdbc.driverClassName}&/value&
&/property&
&property name="url"&
&value&${jdbc.url}&/value&
&/property&
&property name="username"&
&value&${jdbc.username}&/value&
&/property&
&property name="password"&
&value&${jdbc.password}&/value&
&/property&
&bean id="dataSource11"
class="mons.dbcp.BasicDataSource" destroy-method="close"&
&property name="driverClassName"&
&value&${jdbc.driverClassName}&/value&
&/property&
&property name="url"&
&value&${jdbc.11url}&/value&
&/property&
&property name="username"&
&value&${jdbc.username}&/value&
&/property&
&property name="password"&
&value&${jdbc.password}&/value&
&/property&
&bean id="dataSource116"
class="mons.dbcp.BasicDataSource" destroy-method="close"&
&property name="driverClassName"&
&value&${jdbc.driverClassName}&/value&
&/property&
&property name="url"&
&value&${jdbc.116url}&/value&
&/property&
&property name="username"&
&value&${jdbc.username}&/value&
&/property&
&property name="password"&
&value&${jdbc.password}&/value&
&/property&
到这就差不多了还需要个SqlMapConfig.properties就OK了 因为我所用的库就URL不同 其他的都是一样的 所以上面的配置大伙可以根据自己要求改
jdbc.datasource=mons.dbcp.BasicDataSource
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver
jdbc.url=jdbc\:db2\://ip\:post/dbname
jdbc.username=username
jdbc.password=password
jdbc.105url=jdbc\:db2\://ip\:post/dbname
jdbc.116url=jdbc\:db2\://ip\:post/dbname
jdbc.11url=jdbc\:db2\://ip\:post/dbname
上面是SqlMapConfig.properties 配置
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"&
&package name="multi" namespace="/bbsp/bd" extends="leadmind-base"&
&global-results&
&result name="commonException"&/billplatform/exceptions/exception.jsp&/result&
&/global-results&
&global-exception-mappings&
&exception-mapping result="commonException" exception="java.lang.Exception"&&/exception-mapping&
&/global-exception-mappings&
&action name="MultiDataSource_*" method="{1}" class="***.actions.MultiDataSourceAction"&
&result name="success"&/success.jsp&/result&
&/package&
自己做这个感触很多& 通过做这个小功能 对hibernate spring 了解又深了一些 但也遇到了很多问题 我通过spring 通过setter注入sessionfactory时怎么也注入不进去现在还不明白 但注入一些常量又可以 现在还不明白 只能用getbean方法..这个功能是完成了 但不知道效率咋样 请大家指点
浏览: 12891 次
来自: 北京
你好SourceTemplate 这个是jar包名是什么
你好, 把这两个类的代码给我看看咯
SessionManage ...2016年7月 扩充话题大版内专家分月排行榜第二
2016年10月 扩充话题大版内专家分月排行榜第三2016年6月 扩充话题大版内专家分月排行榜第三
2016年7月 扩充话题大版内专家分月排行榜第二
2016年10月 扩充话题大版内专家分月排行榜第三2016年6月 扩充话题大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 dota2更改服务器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信