我需要一种方法,从运行在该JVM中的Java代码中唯一地永久标识JVM的实例。是否有可能为特定的JVM实例获取真正唯一的ID?
也就是说,如果我有两个JVM在同一台机器上同时运行,每个都是可区分的。 它也可以区别于在其他机器上运行JVM和在同一台机器上执行未来执行,即使进程ID被重用。
我想我可以通过识别开始时间,机器MAC和进程ID并以某种方式组合它们来实现这样的事情。我想知道是否有一些标准的方法来实现这一点。
更新:我看到每个人都推荐整个会话的UUID。这似乎是一个好主意,虽然可能有点太重量级。这是我的问题,但我想使用JVM id在每个JVM执行中创建多个唯一标识符,以某种方式合并JVM实例。
我的理解是,您不应该将其他数字混入UUID,因为唯一性不再有保证。另一种方法是将UUID变成一个字符串并链接起来,但后来变得太长了。任何想法克服这个?
我知道您希望能够唯一标识JVM实例,但是您要使用此信息解决的底层问题是什么? – 2010-05-14 14:28:47
@Thorbjorn:我有一个分布式系统,我需要1)唯一标识传出数据包。2)在日志文件和调试信息中保持“人类可读”,我可以快速识别来自同一实例的数据包。 – Uri 2010-05-14 15:04:25