Ich brauche eine Möglichkeit, eine Instanz der JVM aus Java-Code, der in dieser JVM läuft, eindeutig und dauerhaft zu identifizieren.Ist es möglich, eine wirklich eindeutige ID für eine bestimmte JVM-Instanz zu erhalten?
Das heißt, wenn ich zwei JVMs auf der gleichen Maschine zur gleichen Zeit laufen haben, ist jeder unterscheidbar. Sie unterscheidet sich auch von laufenden JVMs auf anderen Computern und von zukünftigen Ausführungen auf demselben Computer, selbst wenn die Prozess-ID erneut verwendet wird.
Ich glaube, ich könnte so etwas implementieren, indem ich die Startzeit, den MAC der Maschine und die Prozess-ID identifiziere und sie auf irgendeine Weise kombiniere. Ich frage mich, ob es einen Standardweg gibt, um dies zu erreichen.
Update: Ich sehe, dass jeder eine UUID für die gesamte Sitzung empfohlen. Das scheint eine gute Idee zu sein, wenn auch vielleicht etwas zu schwer. Hier ist mein Problem: Ich möchte die JVM-ID verwenden, um mehrere eindeutige Bezeichner in jeder JVM-Ausführung zu erstellen, die irgendwie die JVM-Instanz enthalten.
Mein Verständnis ist, dass Sie nicht wirklich andere Zahlen in eine UUID mischen sollten, weil die Eindeutigkeit nicht mehr garantiert ist. Eine Alternative besteht darin, die UUID zu einer Zeichenfolge zu machen und sie zu verketten, aber dann wird sie zu lang. Irgendwelche Ideen, um das zu überwinden?
Ich verstehe, dass Sie eine JVM-Instanz eindeutig identifizieren können, aber was ist das zugrunde liegende Problem, das Sie mit diesen Informationen lösen sollen? –
@Thorbjorn: Ich habe ein verteiltes System, und ich muss 1) Ausgehende Pakete eindeutig identifizieren.2) Pflegen Sie es "menschlich lesbar", so dass ich in Log-Dateien und Debug-Informationen schnell Pakete identifizieren kann, die von derselben Instanz stammen. – Uri