在不重复构建Web应用程序的情况下更改属性文件

时间:2015-04-23 11:37:02

标签: java web-applications war properties-file

我创建了一个Web应用程序,并且在我已添加到classpath的单独文件夹中,我有一个属性文件。我使用

获取属性对象
public static Properties getProps()  {
    Properties properties = new Properties();
    try {
        properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("mdmdemo.properties"));
    } catch (IOException ex) {
        Logger.getLogger(BasicUtils.class.getName()).log(Level.SEVERE, null, ex);
    }
    return properties;
}

获取密钥没问题。但是,虽然我将属性文件置于战争之外,但在构建和部署战争之前,我无法在prop文件中看到更改。我还重复创建新的属性对象以查看更改,而不仅仅是在Web应用程序初始化中。

我知道,在这种情况下使用数据库是一种更好的解决方案,但我不允许这样做。

我如何获得更改?

2 个答案:

答案 0 :(得分:0)

缓存可能是CassLoader特有的。如果您使用tomcat,这可能会有所帮助:

ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
URL resURL = ctxLoader.getResource(resName);
URLConnection resConn = resURL.openConnection();
resConn.setUseCaches(false);
InputStream resIn = resConn.getInputStream();

答案 1 :(得分:0)

虽然我也怀疑缓存问题https://stackoverflow.com/users/4763733/fran-montero,但我使用

克服了问题
properties.load(new FileInputStream("/absolute/path/to/filename.properties");

不使用ClassLoader解决了这个问题。