如何获取唯一的JVM标识符?
Java代码如何为运行它的JVM获取唯一标识符? 在Unix系统上,我正在寻找的一个例子是运行JVM的进程的PID(假设JVM和进程之间的一对一映射)。
为每个JVM创建唯一ID的一种简单方法是启动静态ServerSocket,设置为使用端口0,它将获取任何空闲端口。 由于在同一端口上不能存在两个ServerSockets(JVM或其他),因此它们都是唯一的,您可以查询它的端口号。 由于它是静态的,因此每个JVM只有一个。
这取决于您拥有的权限,但在大多数情况下它可以正常运行,并且您始终可以将其绑定到“127.0.0.1”,以使其不太可能遇到任何限制。
static ServerSocket myssock; static int myid; static { myssock = new ServerSocket(0); myid = myssock.getLocalPort(); }
如果多个主机上有多个JVM,则可以将上述内容与计算机的LAN IP结合使用,以在网络中创建唯一的JVM ID。
我们一直在使用:
import java.lang.management.ManagementFactory; String jvmName = ManagementFactory.getRuntimeMXBean().getName();
这给出了像
这样的东西,至少在Sun / Oracle JVM中是这样。
- 将XMLGregorianCalendar转换为MM / dd / yyyy hh:mm String的最佳方法是什么?
- 配置Java FileHandler日志记录以创建不存在的目录
- com.vividsolutions.jts.geom.Geometry类中的距离单位是多少?
- Java ResultSet如何以UTC格式获取TimeStamp
- 我可以使用压缩oops多于32 GB的堆
- 在Java Jersey 2 JAX-RS中初始化单例
- 使用构造函数注入进行Spring Auto Components扫描
- 如何按Ctrl + A选择Selenium WebDriver使用Java选择页面中的所有内容
- hadoop2.2.0追加文件发生AlreadyBeingCreatedException