de.bsvrz.sys.startstopp.prozessvew
Class BetriebssystemProzess

java.lang.Object
  extended by de.bsvrz.sys.startstopp.prozessvew.BetriebssystemProzess

public class BetriebssystemProzess
extends java.lang.Object

Klasse stellt Methoden zur Verfügung die es ermöglichen zu Prüfen ob Applikationen bereits auf diesem Rechner laufen bzw. diese auf Betriebssystemebene zu beenden. Das Erkennen ob ein Prozess bereits läuft wird je nach Betriebssystem unterschiedlich gehandhabt: - UNIX/LINUX: es wird der Systembefehl ps -ef<\code> ausgeführt. Das Ergebnis dieses Befehls wird dann interpetiert.
- Windows: unter Windows gibt es nicht unter allen Betriebssystemen einen Befehl um die Prozessliste aufzulisten. Abhilfe schaffen da die "Ps Tools" von Micrososft, die es ermögichen eine Prozessliste zu erstellen und Prozesse zu beenden. (http://www.microsoft.com/germany/technet/sysinternals/utilities/PsTools.mspx) Die Klasse erwartet, dass die Tools pslist.exe bzw. pskill.exe sich in einem Verzeichnis befinden, dass über die path Variable des Betriebssystem erreichbar ist (Sinnvollerweise C:\Windows\System32). Unter Java auf Windows gibt es keine Möglichkeit die Pid eines von Java aus gestarteten Prozesses zu bestimmen. Daher kommt hier folgendes Vorgehen zum Zuge: 1. bevor ein Prozess gestartet wird wird die aktuelle Prozessliste ausgelesen (hierfür muss die Methode iniPidBestimmung() aufgerufen werden. 2. Der Prozess wird gestartet 3. es wird wieder die Prozessliste eingelesen und mit der ersten Prozessliste verglichen. Der neu hinzugekommene Prozess muss der gestartet Prozess sein. (hierfür muss die Methode bestimmePid() aufgerufen werden. - Mac: Verfahren nicht installiert.

Author:
Dambach Werke GmbH

Field Summary
protected static de.bsvrz.sys.funclib.debug.Debug m_debug
          Debug-Logger.
 
Constructor Summary
BetriebssystemProzess(ProzessDaten prozessDaten)
          Konstruktor der Klasse.
 
Method Summary
 void beendeProzess()
          Methode beendet die Applikation auf Betriebsysremebene.
 void bestimmePid()
          Methode bestimmt sofern vorher die Methode iniPidBestimmung() aufgerufen wurde die Pid eines Prozesses auf einem Windowssystem.
 int getPid()
          Methode liefert die Betriebssystem PID der Inkarnation zurück.
 void iniPidBestimmung()
          Methode initialisiert auf Windowssystemen die Felder, die zur Bestimmung der Pid eines Prozesses benötigt werden.
 boolean isGestartet()
          Methode prüft ob eine Applikation bereits gestartet ist.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_debug

protected static final de.bsvrz.sys.funclib.debug.Debug m_debug
Debug-Logger.

Constructor Detail

BetriebssystemProzess

public BetriebssystemProzess(ProzessDaten prozessDaten)
Konstruktor der Klasse. In diesem Konstruktor wird festgestellt auf welcher Betriebssystemplattform die Applikation gestartet wurde.

Parameters:
prozessDaten - Prozessdaten der Inkarnation
Method Detail

isGestartet

public boolean isGestartet()
Methode prüft ob eine Applikation bereits gestartet ist. Es wird dabei nur geprüft, ob eine Applikation läuft, die von einer StartStopp Applikation mit demselben Inkarnationsnamen wie die jetzt laufende, gestartet wurde (siehe StartStoppApp). Hierbei werden die Informationen die in den "Benutzereinstellungen in Windows-Registry oder XML-Dokumenten" (siehe Klasse StartStoppPräferenz) gespeichert sind, ausgewertet.

Returns:
true: Applikation läuft schon, sonst false

getPid

public int getPid()
Methode liefert die Betriebssystem PID der Inkarnation zurück. Unter Unix/Linux wird hierzu der Befehl "ps -ef" ausgewertet, unter Windows das Ergebnis des letzten Aufrufs der Methode "bestimmePid".

Returns:
> 0 Pid, sonst Fehler

beendeProzess

public void beendeProzess()
Methode beendet die Applikation auf Betriebsysremebene. Je nach Betriebssystem werden dabei folgende Systembefehle verwendet:
UNIX/Linux: sh kill -p PID
Windows: pskill PID
Mac: nicht realisiert


iniPidBestimmung

public void iniPidBestimmung()
Methode initialisiert auf Windowssystemen die Felder, die zur Bestimmung der Pid eines Prozesses benötigt werden. Unter Unix/Linux Systemen hat die Methode keine Funktionalität.


bestimmePid

public void bestimmePid()
Methode bestimmt sofern vorher die Methode iniPidBestimmung() aufgerufen wurde die Pid eines Prozesses auf einem Windowssystem. Unter Unix/Linux Systemen hat die Methode keine Funktionalität. Wird die Methode aufgerufen ohne vorher die Methode iniPidBestimmung() aufgerufen zu haben, wird eine IllegalArgumentException ausgelöst.

Throws:
java.lang.IllegalArgumentException