okliu123456的gravatar头像
okliu123456 2015-09-24 11:34:00

java web开发maven工程只需修改配置文件不用重启工程即可动态加载配置文件

java web开发maven工程只需修改配置文件不用重启工程即可动态加载配置文件

1、读取配置文件ConfigManager.java,把变量地址修改成自己的

java web开发maven工程只需修改配置文件不用重启工程即可动态加载配置文件

 //设置动态读取的文件路径
 private static String configPath = "E:/Documents/NetBeansProjects/ConfigManager/conf";
 //设置动态读取的文件名
 private static String pathName = "/configuration.properties";

2、创建监听文件来读取配置文件FileListenerAdaptor.java

  @Override
    public void onFileChange(File file) {
        System.out.println("[修改]:" + file.getAbsolutePath());
         new ConfigManager();
    }

3、启动输入maven令命启动  tomcat7:run

4、访问servlet地址 http://localhost:8080/Web/config

5、修改配置文件是再次访问 地址返回的是修改后的配置文件,无须重起web工程

//读取配置文件(属性文件)的工具类
public class ConfigManager {

    private static ConfigManager configManager;
    //properties.load(InputStream);读取属性文件
    private static Properties properties;
    //设置动态读取的文件路径
    private static String configPath = "E:/Documents/NetBeansProjects/ConfigManager/conf";
    //设置动态读取的文件名
    private static String pathName= "/configuration.properties";
    static {
        try {
            // 构造观察类主要提供要观察的文件或目录,当然还有详细信息的filter
            FileAlterationObserver observer = new FileAlterationObserver(
                    new File(configPath), null, null);
            // 构造收听类
            FileListenerAdaptor listener = new FileListenerAdaptor();
            // 为观察对象添加收听对象
            observer.addListener(listener);
            // 配置Monitor,第一个参数单位是毫秒,是监听的间隔;第二个参数就是绑定我们之前的观察对象。
            FileAlterationMonitor fileMonitor = new FileAlterationMonitor(
                    1000, new FileAlterationObserver[]{observer});

            // 启动开始监听
            fileMonitor.start();

        } catch (Exception ex) {
            Logger.getLogger(FileListenerAdaptor.class
                    .getName()).log(Level.SEVERE, null, ex);
        }
    }

    public ConfigManager() {
//        String configFile = "/opt/soft/apache-tomcat-8.0.12/webapps/gn/conf/configuration.properties";
        String configFile = configPath+pathName;
        properties = new Properties();
        InputStream in = null;
        try {
            System.out.println(new File(".").getAbsolutePath());
            in = new FileInputStream(configFile);
            properties.load(in);
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static ConfigManager getInstance() {
        if (configManager == null) {
            configManager = new ConfigManager();
        }
        return configManager;
    }

    public String getString(String key) {
        return properties.getProperty(key);
    }

    public int getInt(String key) {
        return Integer.parseInt(properties.getProperty(key));
    }

 

 

有问题联系qq 363349862


打赏

文件名:Web.zip,文件大小:18275.941K 下载
最代码最近下载分享源代码列表最近下载
lbcanjelling  LV3 2019年3月27日
云想衣裳花想容  LV1 2019年3月22日
滑小稽稽  LV7 2018年9月25日
imagine  LV1 2018年9月19日
双城1234  LV1 2018年9月7日
zhoujian0319  LV1 2017年12月19日
回音哥  LV13 2017年12月11日
xiechang0122  LV5 2017年11月23日
wytongchun  LV1 2017年11月2日
chinafjfzlj  LV31 2017年10月11日
最代码最近浏览分享源代码列表最近浏览
可行可乐369 9月27日
暂无贡献等级
451804671 2023年3月23日
暂无贡献等级
tomcat_test  LV2 2022年7月6日
aqin_qin  LV1 2022年6月20日
Sarkin  LV4 2022年4月30日
coderyx  LV2 2021年10月26日
月亮0920 2021年3月15日
暂无贡献等级
a314178817  LV1 2021年2月9日
yuexin111  LV6 2021年1月22日
北方的驻风者  LV5 2020年12月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友