Java 跨JVM的对象的对象Id?
我对跨JVM的对象的对象ID有一个问题。假设我已经持久化了一个在JVM1上创建的对象,现在我想在JVM2上使用相同的对象 那么如何做到这一点。 两个JVM上对象的对象Id是否相同? 如果上面的问题是肯定的,那么如果JVM2已经有了一个objectID与持久化对象相同的对象,情况会怎样呢。Java 跨JVM的对象的对象Id?,java,Java,我对跨JVM的对象的对象ID有一个问题。假设我已经持久化了一个在JVM1上创建的对象,现在我想在JVM2上使用相同的对象 那么如何做到这一点。 两个JVM上对象的对象Id是否相同? 如果上面的问题是肯定的,那么如果JVM2已经有了一个objectID与持久化对象相同的对象,情况会怎样呢。 谢谢。在您反序列化该对象之前,该对象不会存在于JVM2上。Java中没有通用对象ID的概念——如果您需要对象的ID,您必须自己添加它。您可以向对象添加UUID字段;然后,您需要维护某种缓存,以允许您发现重复项
谢谢。在您反序列化该对象之前,该对象不会存在于JVM2上。Java中没有通用对象ID的概念——如果您需要对象的ID,您必须自己添加它。您可以向对象添加UUID字段;然后,您需要维护某种缓存,以允许您发现重复项
你真的确定你需要这些吗?也许值得再看一眼全局并重新设计。在反序列化之前,JVM2上不存在该对象。Java中没有通用对象ID的概念——如果您需要对象的ID,您必须自己添加它。您可以向对象添加UUID字段;然后,您需要维护某种缓存,以允许您发现重复项 你真的确定你需要这些吗?也许值得再看一眼全局并重新设计。查看序列化,或者您可以使用RMI 我不太清楚你说的对象Id是什么意思,如果你指的是当你打印出一个没有toString方法的对象时打印出来的引用,这不是对象ID这是内存地址引用,在每个JVM上都不同,在同一程序的不同调用上也不同。检查序列化,或者您可以使用RMI
我不太清楚你说的对象Id是什么意思,如果你指的是当你打印出一个没有toString方法的对象时打印出来的引用,这不是对象ID这是内存地址引用,在每个JVM上会有所不同,在同一程序的不同调用上也会有所不同。您可以向对象添加UUID以创建唯一的ID UUID UUID=UUID.randomUUID
您可以向对象添加UUID以创建唯一id UUID UUID=UUID.randomUUID
实际上,我们有一个多节点实现。在所有节点中,一个对象都应该具有相同的对象ID。这就是要求。对象ID听起来像是特定于您的应用程序的,对吗?@gurukulki:不过,您的对象还没有自己的标识形式吗?如果你有一些自然键,那很可能是你在其他地方使用的…实际上我们有一个多节点实现。在所有节点中,一个对象都应该具有相同的对象ID。这就是要求。对象ID听起来像是特定于您的应用程序的,对吗?@gurukulki:不过,您的对象还没有自己的标识形式吗?如果你有一些自然的钥匙,那很可能是你在其他地方使用的…+1表示新的东西!我以前没见过,你用过吗,如果用过,在哪里?@James B直到现在我都不需要这个,我通常使用节点的应用程序配置中的唯一Id或它的IP地址。我认为它很方便,我总是使用一些当前时间(毫秒)和对象中的半唯一字符串哈希的组合,但这可以让我省去做一些总是觉得有点笨拙的事情——谢谢+1新东西!我以前没见过,你用过吗,如果用过,在哪里?@James B直到现在我都不需要这个,我通常使用节点的应用程序配置中的唯一Id或它的IP地址。我认为它很方便,我总是使用一些当前时间(毫秒)和对象中的半唯一字符串哈希的组合,但这可以让我省去做一些总是觉得有点笨拙的事情——谢谢!