以下是解决您的使用案例的一种可能方法。我们可以指定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