以下是解決您的使用案例的一種可能方法。我們可以指定JVM arguments,我們可以在其中指定使用-D選項的屬性。這些屬性隨後可作爲系統屬性在JVM的整個生命週期內訪問到所有類。
因此,例如,假設我們推出類似下面的Java程序:
java MyProgram -DJVMID=A18342FB-68DD-4C64-B606-301366B8ABB0
現在Java程序中,無論你打算登錄的JVM所有你需要做的ID是下面的:
String jvmID = (String)(System.getProperty("JVMID");
//log the JVM ID
logger.log(jvmID + " : " + " Activity happened");
請注意,您可以使用自己的可讀字符串作爲JVM ID,而不是UUID。
如果您想將屬性文件與包含各種JVM屬性的JVM相關聯;這裏是你如何做到這一點。假設屬性文件的名稱是MyProgram.properties。
我們推出的JVM如下
java MyProgram -DPROPERTIES_FILE=MyProgram.properties
然後,您可以加載性能如下文件。這已經採取了從Oracle docs:
public static void main(String[] args)
{
// set up new properties object
// from file "myProperties.txt"
String propertyFiletoLoad = (String)(System.getProperty("PROPERTIES_FILE"));
FileInputStream propFile =
new FileInputStream(propertyFileToLoad);
Properties p =
new Properties();
p.load(propFile);
// set the system properties
System.setProperties(p);
}
隨着main()
完成以上你就可以通過簡單地調用System.getProperty("propertyName");
希望這有助於訪問您需要在Java程序中任何地方的任何財產。
這有幫助嗎? http://stackoverflow.com/questions/8302634/how-to-obtain-unique-jvm-identifier –
VMID路線在您每次需要時都會更改。上面提到的服務器套接字方法並不完全是我正在尋找的。但有價值的想法來解決類似的問題。 – BuddyJoe
有沒有辦法將一個.properties文件與一個JVM關聯,而不是運行在它下面的一個.jar?每次JVM啓動時,是否有一個能夠傳遞GUID的約定?這可以輕鬆地複製到其他40臺機器上? – BuddyJoe