Hallo,
ich versuche mich gerade daran eine Art Batchmonitor zu schreiben. Dazu starte ich eine Batch mittels dem ProcessBuilder. Die Batch startet dann ein externes Modul und nach kurzer Zeit beendet es dieses dann wieder, das ganze in einer Endlosschleife, also starten, auflegen, starten, auflegen...... Das funktioniert soweit auch ganz gut, aber nun zu dem Problem: Es kommt vor dass das Modul nach dem Beenden einfach hängen bleibt und der Prozess bei "
einfach hängen bleibt und nicht wieder startet. Genau hier muß dann eingegriffen werden. Mein Monitor soll diesen Fall erkennen, den Prozess beenden und wieder neu starten. Leider habe ich keine Ahnung wie ich das realisieren kann, jmd eine Idee?
Hier mal der aktuelle Code:
ich versuche mich gerade daran eine Art Batchmonitor zu schreiben. Dazu starte ich eine Batch mittels dem ProcessBuilder. Die Batch startet dann ein externes Modul und nach kurzer Zeit beendet es dieses dann wieder, das ganze in einer Endlosschleife, also starten, auflegen, starten, auflegen...... Das funktioniert soweit auch ganz gut, aber nun zu dem Problem: Es kommt vor dass das Modul nach dem Beenden einfach hängen bleibt und der Prozess bei "
Code:
Sending message to Modul,ACBX ... done"
Hier mal der aktuelle Code:
Java:
public void run(){
try {
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "MyWindowsDOSBatch.bat");
System.out.println("MyWindowsDOSBatch.bat gestartet");
processBuilder.directory(new File("C:\\"));
final Process process = processBuilder.start();
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() {
public void run() {
Scanner scanner = new Scanner(process.getInputStream());
String line;
long start;
long end;
while (scanner.hasNext()) {
line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
}
});
System.out.println(process.waitFor());
executorService.shutdown();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}