Java-Abfrage

Status
Nicht offen für weitere Antworten.

Helpdesk

Mitglied
Hallo zusammen,

habe die Aufgabe bekommen ein DOS-Programm, welches bei und im Betrieb benutzt wird:

1. aus dem Intranet aufzurufen
2. einzuschränken, dass dieses Fenster nur EINMAL geöffnet werden darf.

Der erste Punkt war ein Klacks, aber wie sieht es mit dem zweiten Punkt aus...
Kann mir jemand helfen?
Nehme ich eine if-Anweisung??

Über schnelle Hilfe, würde ich mich sehr freuen.

Patrick
 
Spricht was dagegen, z.B. eine Art Semaphoredatei zu erstellen, sobald der erste das DOS Programm öffnet und beim Beenden des Programms wird diese Datei wieder gelöscht.
Das ist denke ich mal die einfachste Lösung.

Also prinzipiell folgender Ablauf:

- erster Nutzer will DOS Programm öffnen
- Prüfung, ob die Lock-Datei vorhanden ist
- wenn vorhanden, dann aussteigen
- wenn nicht vorhanden, Datei anlegen
- DOS Programm ausführen
- DOS Programm beendet
- Lock-Datei wird gelöscht

Wenn man das Programm nicht umschreiben kann, damit es diese Datei erzeugt bzw. löscht, dann
kann man auch einen Workaround machen, indem man eine Batchdatei schreibt, die genau das übernimmt.
Quasi:
- Aufruf Batchdatei
- Prüfung ob Lockdatei existiert
- wenn ja, aussteigen
- wenn nein, dann Datei anlegen
- DOS-Programm starten
- Nachdem DOS-Programm beendet ist die Lockdatei löschen

Hoffe das war verständlich...

lr
 
Gegen die Dateilösung würde nur sprechen, das wenn das Programm ausserplanmässig beendet wird, das dann die Datei nicht gelöscht wird.
 
Bert Brenner hat gesagt.:
Gegen die Dateilösung würde nur sprechen, das wenn das Programm ausserplanmässig beendet wird, das dann die Datei nicht gelöscht wird.

Typisches Problem bei Unix-Serverdiensten. In der Regel starten die Dienste dann, geben ne Fehlermeldung aus "blabla LOCK file exists bla bla" und beenden sich direkt wieder. Daher wird auf Clients in der Regel die UDP-Variante benutzt. Die hat auch den Vorteil, dass wenn die Anwendung bereits läuft, die zusätzlich anlaufende Anwendung bei Überprüfung des Ports an diesen eine Nachricht schicken kann. Das kann z.B. genutzt werden um ein mit der Anwendung verknüpftes Dateiformat mit der bereits offenen Instanz zu öffnen...
 
hab die Möglichkeit mit der Semaphore-Datei mal probiert aber es klappt nicht... 🙁

Ist es möglich mit einem Java-Befehl die aktuellen Prozesse abzufragen??
 
Warum machst du nicht dann die UDP Lösung?

Dein Programm macht nen Socket 3121 auf und du fragt ab ob dort dein Programm läuft (datagrampacket/socket) und wenn, dann beenden, ansonsten neu starten!

Vergesst den idioten File weg, der ist aus dem Jahre Schnee!!

Was ist wenn dir wer die Datei weglöscht?! (okay unter windows würde es net klappen, aber unter Linux kann man die Datei löschen, auch wenn sie gerade offen ist)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben