So erhalten Sie einzigartige JVM-identifier?
Wie kann Java-code erhalten einen eindeutigen Bezeichner für die JVM, in denen es läuft? Auf einem Unix-system, ein Beispiel für das, was ich Suche, wäre die PID des Prozesses, in dem die JVM ausgeführt wird (unter der Annahme einer eins-zu-eins-Zuordnung zwischen JVM und Prozesse).
- Siehe stackoverflow.com/questions/35842/process-id-in-java für mehr info auf dem erhalten der Prozess-ID von der aktuellen Java-Prozess. Diesem Blogeintrag hat auch einige gute Infos.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine einfache Methode zum erstellen einer eindeutigen ID für jede JVM zu starten static ServerSocket, die für die Verwendung von port 0 auf dem Sie greifen, werden ein beliebiger freier port. Da es keine zwei ServerSockets JVM (oder andere) vorhanden sein können, auf den gleichen port, so werden diese alle einzigartig und Sie können die Abfrage der port-Nummer. Da es statisch ist, es wird nur einer pro JVM.
Bedeutet dies hängt davon ab, welche Berechtigungen Sie haben, aber in den meisten Fällen funktioniert es ganz gut und Sie können es immer haben bind to "127.0.0.1", um es weniger wahrscheinlich zu kommen gegen Einschränkungen.
Wenn Sie mehrere JVMs auf mehreren host-Rechnern, können Sie kombinieren die oben mit der Maschine der LAN-IP zu einem einzigartigen JVM-ID über ein Netzwerk.
Haben wir bereits mit:
Gibt so etwas wie
<pid>@<hostname>
- zumindest in der Sun/Oracle JVM.