项目启动后,通过配置jdbc.properties发生改变,数据库连接发生改变,怎么能不重启tomcat的情况下,实现新数据库的连接?

解决方案 »

  1.   

    可以试下jrebel热部署插件
      

  2.   

    properties读取文件有几种不同的方式,其中有一种比较常用的是读取完文件后会将当前的文件信息存到缓存中,还有一种是实时的读取,也就是说你第一次加载properties文件后读取一次信息,当你修改了properties后在次进行读取时,会读取到新的信息。
    Properties prop = new Properties();  
    String path = CommonUtils.class.getClassLoader().getResource("config.properties").getPath();  
    InputStream is = new FileInputStream(path);  
    prop.load(is);
    可以试试这种方式读取,能达到你要的效果
      

  3.   

    如果是发布的war包,直接替换掉war包里面的jdbc.properties文件,不过中间会中断几秒
      

  4.   


    程序中重写jdbc.properties文件,不需要用户手工配置
      

  5.   


    不行  spring已经把config.properties加载到JVM中,这样也不重新加载
      

  6.   

    你可以加一个功能用来读取用户配置参数,然后用来修改配置文件。不过这种方法就不能用提前加载,提前加载就得用正确的参数
    Properties pro = new Properties();
    InputStream in = null;
    in = new BufferedInputStream (new FileInputStream(“属性文件路径”);
    pro.load(in);
    //重新写入配置文件
                  FileOutputStream file = new FileOutputStream(“配置文件路径”);pro.put("LOCAL_USER", “你好”);
    pro.put("LOCAL_PWD",“hi”);System.out.println("得到属性key:"+pro.getPropert("LOCAL_PWD")):
              pro.store(file, "系统配置修改"); //这句话表示重新写入配置文件
      

  7.   


    我启动项目的时候得连接一个数据库,这个数据库就是一条信息,启动项目用的,启动后用户首次必须输入新的数据库,我现在想要的目的就是在不重启tomcat的情况下,连接到新的数据库,  我用的是spring-druids数据库连接。
      

  8.   

    1.通过spring来维护一个数据源集合的结构,
    2.将客户填写的数据源内容同步到磁盘上
    3.根据用户请求选择新的数据源,此时需要指定事务管理器
      

  9.   


    没有那么高级,我这其实就是怎么能让spring.xml文件重新在加载一遍
      

  10.   

    首先你得配置一个多数据源的config
    reyo.driverClassName=com.mysql.jdbc.Driver
    reyo.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    reyo.username=root
    reyo.password=123456h2.driverClassName=org.h2.Driver
    h2.url=jdbc:h2:tcp://localhost/mem:h2;DB_CLOSE_DELAY=-1
    h2.username=sa
    h2.password=然后注入相应的beans再指定相应的dao调用相应的数据源即可