我目前有一个 Web 服务,它存储键到某些值的映射,我设法创建了一个 Web 服务接收到的命令的后台日志记录系统。现在我必须实现一个检查指针,它将日志存储到一个文件中,我已经将它实现为 Timer Task 的扩展。所以我想我可以使用计时器来安排检查指针每 20 分钟左右执行一次任务。我的问题是,除了调用检查指针之外,我还必须测试对服务的任何调用是否仍在处理中,等待它完成,然后阻止 web 服务,直到我发送恢复命令,即静默方法。
public class MyCheckpointer extends TimerTask implements Checkpointer {
ObjectOutputStream out;
FileOutputStream file;
MyLogger log;
public MyCheckpointer(MyLogger l)
{
File log_txt = new File("./log.txt");
try {
this.file = new FileOutputStream(log_txt);
this.out = new ObjectOutputStream(this.file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.log = l;
}
@Override
public void run() {
// TODO Auto-generated method stub
this.writeLog();
}
private void writeLog()
{
ArrayList<LogRecord> l = this.log.getArray();
Iterator<LogRecord> e = l.iterator();
do
{
try {
out.writeObject(e.next());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}while(e.hasNext());
}
}