DarkCherub
Grünschnabel
Hallo Zusammen,
ich habe eine Frage zu der Ein- und Ausgabe auf einer Konsole unter Windows, welche man mittels ProcessBuilder gestartet hat. Ich muss mehrere SCA Services starten, hierfür gibt es .bat Startscripte. Da dies einzeln immer zu umständlich war, habe ich mit ProcessBuilder herumexperimentiert und bekomme nun die einzelnen Services gestartet und erhalte auch für jeden eine Konsole. Der Code sieht ungefähr so aus:
Soweit so gut, in der config sind mehrere Services definiert und für jeden wird eine Konsole gestartet in welcher der Service auf einen Tastendruck wartet und dann terminiert wird. Meine Frage ist nun, kann ich irgendwie diesen Tastendruck von dem aufrufenden Javaprogramm aus simulieren? Ich kann mir einen OutputStream besorgen:
aber sofern ich das richtig verstehe schreibt dieser in die "falsche" Konsole, nämlich in jene, welche "start" aufgerufen hat und nicht in die, in welcher die .bat Datei ausgeführt wurde.
Gibt es hier eine einfache Möglichkeit in die "richtige" Konsole zu schreiben?
Alternativ könnte ich das Ganze insgesamt etwas umbauen und mittels JMX (oder anderen Mitteln) eine Kommunikation zwischen dem Aufrufer und den Services implementieren, das wäre nur eben ein etwas größerer Eingriff. Ich bin auch für sontige Vorschläge offen, ich müsste nur irgendwie die gestarteten Prozesse terminieren können.
Danke im Vorraus.
ich habe eine Frage zu der Ein- und Ausgabe auf einer Konsole unter Windows, welche man mittels ProcessBuilder gestartet hat. Ich muss mehrere SCA Services starten, hierfür gibt es .bat Startscripte. Da dies einzeln immer zu umständlich war, habe ich mit ProcessBuilder herumexperimentiert und bekomme nun die einzelnen Services gestartet und erhalte auch für jeden eine Konsole. Der Code sieht ungefähr so aus:
Code:
String projectPath = config.getString( projectKey + ".Path" );
String batFile = config.getString( projectKey + ".Bat" );
String pathToProject = startPath + File.separator + projectPath;
Process p = new ProcessBuilder( "cmd", "/c", "start", "\"" + projectKey + "\"", "/D", pathToProject, batFile ).start();
Soweit so gut, in der config sind mehrere Services definiert und für jeden wird eine Konsole gestartet in welcher der Service auf einen Tastendruck wartet und dann terminiert wird. Meine Frage ist nun, kann ich irgendwie diesen Tastendruck von dem aufrufenden Javaprogramm aus simulieren? Ich kann mir einen OutputStream besorgen:
Code:
OutputStream os = p.getOutputStream();
PrintWriter writer = new PrintWriter( new BufferedWriter( new OutputStreamWriter(os) ) );
writer.write( '\n' );
writer.close();
Gibt es hier eine einfache Möglichkeit in die "richtige" Konsole zu schreiben?
Alternativ könnte ich das Ganze insgesamt etwas umbauen und mittels JMX (oder anderen Mitteln) eine Kommunikation zwischen dem Aufrufer und den Services implementieren, das wäre nur eben ein etwas größerer Eingriff. Ich bin auch für sontige Vorschläge offen, ich müsste nur irgendwie die gestarteten Prozesse terminieren können.
Danke im Vorraus.