Anzahl gestarteter Instanzen einer Anwendung ?

wie kann ich in Java die Anzahl gestarteter Instanzen einer Anwendung bestimmen ? Danke im voraus - chorys

Hi,

ein Ansatz, der mir bisher bekannt ist:
Überprüfe bei Anwendungsbeginn, ob ein vorher bestimmter Port offen ist. Ist dieser nicht belegt, so ist bisher keine Instanz deines Programmes gestartet. Kommt nur noch auf die richtige Wahl des Ports an.

Bei n Instanzen schaffst du halt einen Pool von n Ports, die nacheinander probiert werden.

Ciao, Bill

ich kenne auch einen Einsatz:
statische Variablen sind einer Klasse zugeordnet. das heisst alle Instanzen einer Klasse kennen diese variable und haben alle den selben wert davon.
einen zähler definieren als static in der Klasse
zähler inkrementieren beim erzeugung einer Instanz (in Konstruktur zb)
Methode zum lesen vom Zähler

ich hoffe dass das hilft
youssef

danke für die schnelle Antwort. Die Lösung scheint mir interessant zu sein. Was meinst du genauer mit der ‚richtigen Wahl des Ports‘ ?.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo youssef,
danke für den Hinweis. Obwohl ich glaube, dass statische variablen ihren Wert nur innerhalb eines Prozesses (einer Anwendung) behalten, werde ich es ausprobieren und gebe Dir Bescheid über das Resultat - chorys.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo youssef,
wie ich vermutet habe, funktionieren statische variablen nur innerhalb eines Prozesses (werden beim start einer Anwendung immer neu initialisiert). Bids zum nächsten mal - chorys.

danke für die schnelle Antwort. Die Lösung scheint mir
interessant zu sein. Was meinst du genauer mit der ‚richtigen
Wahl des Ports‘ ?.

Ich denke er meint damit, Du solltest keinen Port benutzen, der anderweitig benötigt wird, (z.B. Port 80, wenn Du einen Webserver betreibst).
Überhaupt sollte wohl kein priviligierter Port (

1 „Gefällt mir“

Es könnte auch gehen, in dem jede Instanz eine temporäre Datei
in einem reservierten Verzeichnis erzeugt, und man einfach
diese Dateien zählt.
Ich glaube mit java.nio.channel.FileLock kann man Dateien
erzeugen, die automatisch verschwinden, wenn die JVM
terminiert.
Habe es aber noch nicht gemacht.

hallo Stefan,
bin lange Zeit nicht mehr im wer-weiss-was gewesen: daher meine späte reaktion.
Mein Problem war zimlich einfach- wollte aus sicherheits Gründen nur eine Instanz der Anwendung laufen lassen. Das habe ich inzwischen mit einem ‚user port‘ -> 49152 bis 65535 gelöst. Dein Ansatz mit den temprären Dateien hat aber den Vorteil, dass evt. vorhandene Firewall nicht dazwischen funkt, was beim öffnen eines Sockets der Fall ist. Werde es bestimmt irgendwann ausprobieren.
Danke und zum nächsten mal, chorys.