我有一个基于 Web 的应用程序,它的属性文件中声明的属性很少。我正在使用 Weblogic 来部署这个应用程序。正如预期的那样,如果属性文件发生任何更改,我们必须重新启动 weblogic 服务器才能使更改生效。
但是,现在有一个要求,如果任何属性文件发生更改,我应该避免服务器重新启动。我想知道这是否可能,因为我无法找到任何解决方案。
请让我知道这是否可能。如果是,那么如何?
对于属性自动重新加载,您可以使用 FileSystemManager 和 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();
}
}
}