現在、いくつかの値へのキーのマッピングを格納するWebサービスがあり、Webサービスによって受信されたコマンドのバックグラウンドロギングシステムを作成することができました。ここで、ログをファイルに保存するチェックポインターを実装する必要があります。これは、タイマータスクの拡張機能として実装しました。そのため、タイマーを使用して、チェックポインターが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());
}
}