最代码广告位
okliu123456的gravatar头像
okliu1234562015-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 LV32019年3月27日
星星星星星星
云想衣裳花想容 LV12019年3月22日
星星
滑小稽稽 LV72018年9月25日
月亮星星星星星星
imagine LV12018年9月19日
星星
双城1234 LV12018年9月7日
星星
zhoujian0319 LV12017年12月19日
星星
回音哥 LV122017年12月11日
月亮月亮月亮
xiechang0122 LV52017年11月23日
月亮星星
wytongchun LV12017年11月2日
星星
chinafjfzlj LV312017年10月11日
太阳月亮月亮月亮星星星星星星
最代码最近浏览分享源代码列表最近浏览
xiaoli041月3日
暂无贡献等级
daijian79 LV52019年12月18日
月亮星星
1234567autfv LV52019年12月18日
月亮星星
大神程序员 LV162019年12月12日
太阳
---天堂鸟---2019年10月19日
暂无贡献等级
keith00 LV122019年8月13日
月亮月亮月亮
912299793 LV122019年7月14日
月亮月亮月亮
youwuzuichen LV62019年7月5日
月亮星星星星
龚123456 LV22019年7月4日
星星星星
yzh1995 LV72019年6月23日
月亮星星星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友

页面底部区域 foot.htm