我有一个基于Web的应用程序,它在属性文件中声明了很少的属性。我正在使用Weblogic来部署此应用程序。正如预期的那样,如果属性文件发生任何变化,我们必须重新启动weblogic服务器才能使更改生效。
但是,现在有一个要求,我应该避免服务器重新启动任何属性文件的更改。我想知道它是否可能,因为我无法找到任何解决方案。
请尽可能让我知道。如果是,那怎么样?
答案 0 :(得分:1)
对于属性自动重新加载,您可以使用FileSysstemManager和VFS FileListener 使用FileSystemManager启动时注册文件以进行监视。然后在文件更改时调用fileChanged,其中可以重新加载属性。
例如代码:
public class PropertyManager implements FileListener{
@Override
public void fileChanged(FileChangeEvent fileChangeEvent) {
//Reload here into memory
}
}
private register(STring fileName){
String pathToPropertyFile = new ClassPathResource(fileName).getFile().getPath();
FileSystemManager fsManager = VFS.getManager();
FileObject listenFile = fsManager.resolveFile(pathToPropertyFile);
DefaultFileMonitor fm = new DefaultFileMonitor(this);
fm.setRecursive(true);
fm.addFile(listenFile);
fm.setDelay(15000);
fm.start();
}
}
}