我创建了一个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应用程序初始化中。
我知道,在这种情况下使用数据库是一种更好的解决方案,但我不允许这样做。
我如何获得更改?
答案 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解决了这个问题。