サイトに HTTP リクエストを送信し、ant が応答を取得して検査し、特定のキーワードが含まれている場合は、HTTP 要求と応答の両方を XML ファイルに書き込むアプリケーションがあります。このアプリケーションは、スパイダーを使用してサイトのすべての URL をマップし、リクエストを送信します (サイトマップ内の各 URL は、リクエストを送信する個別のスレッドに送られます)。このようにして、すべてのリクエストがいつ送信されたかを知ることができなくなります。私が要求したすべての最後に、XML ファイルを他の形式に変換したいと考えています。したがって、リクエストがいつ終了したかを知るために、次の戦略を使用します。
各リクエストの時刻を変数に保存します (変数の時刻よりも遅い時間に新しいリクエストが送信されると、変数が更新されます)。また、今回は監視するスレッドを開始し、現在時刻と変数の時刻の差が 1 分を超えていれば、リクエストの送信が停止したことがわかります。この目的のために次のコードを使用します。
class monitorReq implements Runnable{
Thread t;
monitorReq(){
t=new Thread(this);
t.start();
}
public void run(){
while((new Date().getTime()-last_request.getTime()<60000)){
try{
Thread.sleep(30000);//Sleep for 30 secs before checking again
}
catch(IOException e){
e.printStackTrace();
}
}
System.out.println("Last request happened 1 min ago at : "+last_request.toString());
//call method for conversion of file
}
}
このアプローチは正しいですか?または、同じことを実装できるより良い方法がありますか。