Ho bisogno di un modo per identificare in modo univoco e permanente un'istanza della JVM dal codice Java in esecuzione in quella JVM.È possibile ottenere un ID univoco per una particolare istanza JVM?
Cioè, se ho due JVM in esecuzione contemporaneamente sulla stessa macchina, ognuna è distinguibile. È inoltre possibile distinguere JVM in esecuzione su altre macchine e da future esecuzioni sulla stessa macchina, anche se l'ID processo viene riutilizzato.
Immagino di poter implementare qualcosa di simile identificando l'ora di inizio, il MAC della macchina e l'ID del processo e combinandoli in qualche modo. Mi chiedo se ci sia un modo standard per raggiungere questo obiettivo.
Aggiornamento: vedo che tutti hanno consigliato un UUID per l'intera sessione. Sembra una buona idea anche se forse un po 'troppo pesante. Ecco il mio problema però: voglio usare l'id JVM per creare più identificatori univoci in ogni esecuzione JVM che in qualche modo incorporano l'istanza JVM.
La mia comprensione è che non si dovrebbero mescolare altri numeri in un UUID perché l'univocità non è più garantita. Un'alternativa è rendere l'UUID in una stringa e incatenarlo, ma diventa troppo lungo. Qualche idea su come superare questo?
Capisco che desideri essere in grado di identificare in modo univoco un'istanza JVM, ma qual è il problema di base che devi risolvere con queste informazioni? –
@Thorbjorn: Ho un sistema distribuito e ho bisogno di 1) Identificare in modo univoco i pacchetti in uscita.2) Mantenerlo 'leggibile' in modo che nei file di registro e nelle informazioni di debug possa identificare rapidamente i pacchetti provenienti dalla stessa istanza. – Uri