This patch tries to get the VM-specific code more reliably, adding the
hash code of the local host string.
2006-03-08 Audrius Meskauskas <[EMAIL PROTECTED]>
* java/rmi/server/UID.java (getMachineId): Include the host IP address.
Index: UID.java
===================================================================
RCS file: /sources/classpath/classpath/java/rmi/server/UID.java,v
retrieving revision 1.9
diff -u -r1.9 UID.java
--- UID.java 8 Mar 2006 07:57:02 -0000 1.9
+++ UID.java 8 Mar 2006 21:38:24 -0000
@@ -42,6 +42,7 @@
import java.io.DataOutput;
import java.io.IOException;
import java.io.Serializable;
+import java.net.InetAddress;
/**
* Represents the unique identifier over time for the host which has generated
@@ -187,10 +188,26 @@
*/
static int getMachineId()
{
+ int hostIpHash;
+
+ try
+ {
+ // Try to get the host IP.
+ String host = InetAddress.getLocalHost().toString();
+ // This hash is content - based, not the address based.
+ hostIpHash = host.hashCode();
+ }
+ catch (Exception e)
+ {
+ // Failed due some reason.
+ hostIpHash = 0;
+ }
+
// Should be the unque address if hashcodes are addresses.
// Additionally, add the time when the RMI system was probably started
// (this class was first instantiated).
- return UID.class.hashCode() + (int) System.currentTimeMillis();
+ return new Object().hashCode() ^ (int) System.currentTimeMillis()
+ ^ hostIpHash;
}
/**