CLI-Programm zum Terminieren zwingen

Diskutiere CLI-Programm zum Terminieren zwingen im Software Allgemein Forum im Bereich Software Forum; Hallo, ehrlich gesagt hätte ich für mein Problem einen Titel wählen müssen, der über mehrere Zeilen geht. Ich sitz seit 3 Tagen an einem Problem...
B

buggybunny

Threadstarter
Dabei seit
27.10.2006
Beiträge
30
Hallo,

ehrlich gesagt hätte ich für mein Problem einen Titel wählen müssen, der über mehrere Zeilen geht. Ich sitz seit 3 Tagen an einem Problem und komm nicht mehr weiter.

Ich vermute mein Beitrag wird lang, also danke an alle die die Geduld haben ihn sich durchzulesen.....:flenn

Ok, ich versuch es so einfach wie möglich zu halten (warum ich den Beitrag nicht unter Programmierung gepostet habe kommt später):

Situtation:

- ich entwickle eine Java Servlet Applikation
- diese läuft unter dem Tomcat
- OS ist Windows 2000 Server

Anforderung:

- Die Applikation liest Dateien ein, die von beliebigen Laufwerken kommen können
- Deshalb prüfe ich mittels des Tools handle von Microsoft ( klick) ob die Dateien fertig geschrieben wurden)
- Das klappt in einer simplen Test-Main-Klasse auch wunderbar

Das Problem:

- Rufe ich exakt denselben Code in meiner Applikation auf hängt die gesamte Applikation an der Stelle an der ich mir die Ausgabe des Prozesses holen möchte
Code:
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

while((line = bufferedReader.readLine()) != null) {
- Kommentiere ich diese Stelle aus, sprich ich verzichte auf das Holen der Eingabe, hängt das Ganze ebenfalls, und zwar an der Stelle wo ich darauf warte das der Prozess terminiert

Code:
process.waitFor()
- Ich kriege keine Exceptions, errors, oder Log-Einträge, das Ganze hängt einfach

Was ich alles ausschließen kann:

  • Security-probleme, sprich das der Tomcat externe Applikationen nicht ausführen kann. Ein "nslookup google.de" funktioniert problemlos usw.
  • Fehlende Rechte: Handle muss mit administrativen Rechten ausgeführt werden. Schaue ich nun mit "handle tomcat*" nach, sehe ich das der Tomcat unter dem user NT-AUTORIT-T/SYSTEM läuft. Schaue ich mir nun die Sicherheitseinstellungen von handle.exe an, sehe ich das "SYSTEM" Vollzugriff auf die handle.exe hat

Schlußfolgerung:

Was schließe ich nun daraus?

Es muss einen Unterschied geben von wo aus diese handle.exe aufgerufen wird.
Aus irgendeinem Grund gibt mir handle.exe - wenn vom Tomcat aus aufgerufen - keine Ausgabe und terminiert auch nicht.
Da das Programm nicht open-source ist kann ich mir natürlich auch nicht anschauen warum das so ist.

Deshalb die Frage an die Windows-Experten:

Woran könnte das liegen?

Kann ich dieses Programm irgendwie zwingen zu terminieren bzw. mir eine Ausgabe zu liefern?

Hier ist mal der Code der - als standalone applikation - funktioniert:

Code:
public class TestIt {

   public static void main(String[] args){

      String pathToFileHandleTool = "C:\\tmp\\Handle\\handle.exe";
      String pathToFile = "C:\\tmp\\openSUSE-10.2-GM-i386-CD3.iso";
      String expectedFileHandleSuccessOutput = "(.*)No matching handles found(.*)";
      System.out.println("pathToFileHandleTool:" + pathToFileHandleTool);
      System.out.println("pathToFile: " + pathToFile);
      System.out.println("expectedFileHandleSuccessOutput: " + expectedFileHandleSuccessOutput);
      
      ProcessBuilder builder = null;
      // check for os
      if(System.getProperty("os.name").matches("(.*)Windows(.*)")) {
         System.out.println("we are on windows..");
      } else {
         System.out.println("we are on linux..");
      }
      builder = new ProcessBuilder( pathToFileHandleTool, pathToFile);
      Process process = null;
      String commandOutput = "";
      String line = null;
      BufferedReader bufferedReader = null;
      try {
         process = builder.start();
         // read command output
         bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
         if(!bufferedReader.ready()) {
            System.out.println("bufferedReader not ready!");
         }
          System.out.println("bin vor readline!");
          while((line = bufferedReader.readLine()) != null) {
             commandOutput += line;
                System.out.println("reading in line....");
          }
          System.out.println("bin nach readline!");
          System.out.println("commandoutput: " + commandOutput);
         // wait till process has finished
         process.waitFor();
      } catch (IOException e) {
         System.out.println(e.getMessage());
         e.printStackTrace();
      }  catch (InterruptedException e) {
         System.out.println(e.getMessage());
         e.printStackTrace();      }
      // check output to assure that no process uses file
      if(commandOutput.matches(expectedFileHandleSuccessOutput))
         System.out.println("no other processes accesses file!");
      else
         System.out.println("one or more other processes access file!");
   }
}
Ich hoffe mir kann hier jemand helfen.....
 
Thema:

CLI-Programm zum Terminieren zwingen

CLI-Programm zum Terminieren zwingen - Ähnliche Themen

  • Beispiele für die Nutzung von Azure CLI

    Beispiele für die Nutzung von Azure CLI: <p>Microsoft hat auf Basis von Kunden-Feedback <a href="https://azure.microsoft.com/de-de/blog/leverage-the-azure-cli-with-these-examples/"...
  • Deployment von Azure Resource Manager mit Azure Cli auf Microsoft Azure Deutschland

    Deployment von Azure Resource Manager mit Azure Cli auf Microsoft Azure Deutschland: <p>Technical Evangelist Daniel Kreuzhofer erklärt in <a...
  • Microsoft Azure Subscription mit Microsoft Azure Cross Platform CLI Tools steuern

    Microsoft Azure Subscription mit Microsoft Azure Cross Platform CLI Tools steuern: Mit den Microsoft Azure Cross Platform CLI Tools können Sie Ihre Microsoft Azure Subscription steuern. Im <a...
  • Programme und Features durch den Systemadministrator deaktiviert

    Programme und Features durch den Systemadministrator deaktiviert: Hallo, Ich habe ein Problem mit der Sektion Programme und Features in der Systemsteuerung. Ich kann nicht die Liste sehen. Ich habe Windows 10...
  • Ähnliche Themen
  • Beispiele für die Nutzung von Azure CLI

    Beispiele für die Nutzung von Azure CLI: <p>Microsoft hat auf Basis von Kunden-Feedback <a href="https://azure.microsoft.com/de-de/blog/leverage-the-azure-cli-with-these-examples/"...
  • Deployment von Azure Resource Manager mit Azure Cli auf Microsoft Azure Deutschland

    Deployment von Azure Resource Manager mit Azure Cli auf Microsoft Azure Deutschland: <p>Technical Evangelist Daniel Kreuzhofer erklärt in <a...
  • Microsoft Azure Subscription mit Microsoft Azure Cross Platform CLI Tools steuern

    Microsoft Azure Subscription mit Microsoft Azure Cross Platform CLI Tools steuern: Mit den Microsoft Azure Cross Platform CLI Tools können Sie Ihre Microsoft Azure Subscription steuern. Im <a...
  • Programme und Features durch den Systemadministrator deaktiviert

    Programme und Features durch den Systemadministrator deaktiviert: Hallo, Ich habe ein Problem mit der Sektion Programme und Features in der Systemsteuerung. Ich kann nicht die Liste sehen. Ich habe Windows 10...
  • Oben