监视本地文件更改
Liberty 具有高度动态行为,用以响应配置、应用程序和其他资源的更改。此动态行为大体上以监视本地文件系统中是否发生更改为基础。执行此监视的服务是通过 FileMonitor SPI 提供给所有 Liberty 功能部件。文件监视器服务是由 Liberty 内核提供,因此您不必在 server.xml 文件中指定功能部件以使该功能部件变为可用。
关于此任务
FileMonitor SPI 提供不同的属性以指定监视的资源及监视频率。必须实现 FileMonitor 接口,并向服务注册表注册实现类。
每个 Liberty SPI 的 Java™ API 文档均在信息中心中的编程接口 (API) 部分进行详细说明,而且还可以在 ${wlp.install.dir}/dev 目录的某个 javadoc 子目录下的单独 .zip 文件中找到。
示例
...
import com.ibm.wsspi.kernel.filemonitor.FileMonitor;
...
public class MyFileMonitor implements FileMonitor {
...
private final BundleContext bundleContex;
...
public MyFileMonitor(BundleContext bundleContext) {
this.bundleContext = BundleContext;
...
}
public ServiceRegistration<FileMonitor> monitorFiles(Collection<String> paths, long monitorInterval) {
...
final Hashtable<String, Object> fileMonitorProps = new Hashtable<String, Object>();
fileMonitorProps.put(FileMonitor.MONITOR_FILES, paths);
fileMonitorProps.put(FileMonitor.MONITOR_INTERVAL, monitorInterval);
...
return bundleContext.registerService(FileMonitor.class, this, fileMonitorProps);
}
...
}