我正在耳朵的 lib 文件夹中部署一个带有 jar 的 EAR。这个 jar 生成一个 DefaultFileMonitor 线程(来自 Apache Commons api)并监视一个文件。
当我使用 twiddle 重新部署 EAR 时,为所有 WAR 调用的取消部署似乎不会杀死 DefaultFileMonitor 线程。
问题是这将使多个 DefaultFileMonitor 在同一个文件上保持打开状态,这会导致问题。
杀死这个线程的正确方法是什么?玩弄是罪魁祸首吗?
public enum Logger {
INSTANCE;
DefaultFileMonitor fm = new DefaultFileMonitor(new CustomFileListener());
private FileObject file = null;
private FileObject object = null;
private Logger() {
this.openFile();
try {
FileSystemManager fsManager = VFS.getManager();
file = fsManager.resolveFile(this.getfileLocation());
object = fsManager.resolveFile("c:\test.txt");
} catch (FileSystemException e) {
e.printStackTrace();
}
fm.setDelay(1000);
fm.addFile(file);
fm.start();
}
这是我用来加载 DefaultFileMonitor 的代码