Hi, I was trying to set up a distributed cache architecture with JCS, the memory cache and the disk auxiliary were working just fine but I could not set up the remote auxiliary properly. After some investigation I suspect that the reason the client could not communicate with the server properly has to do with the JCS code relying on InetAddress.getLocalHost() method call which returns ambiguous results on Linux systems. (I later found a bug report about this at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4665037 ). E.g.: client looking up an IPv6 enabled Fedora Core 6 server:
"looking up server //192.168.6.28:1102/org.apache.jcs.auxiliary.remote.behavior.IRemoteCach eService" org.apache.jcs.auxiliary.remote.RemoteCacheManager 107:Naming.lookup( "//192.168.6.28:1102/org.apache.jcs.auxiliary.remote.behavior.IRemoteCac heService" ); "server found" "remote service = RemoteCacheServer_Stub ... endpoint:[0:0:0:0:0:0:0:1:1103](remote),objID:[7c19e... etc." at the same time the same client looking up another also IPv6 enabled Fedora Core 6 server: "looking up server //192.168.10.59:1102/org.apache.jcs.auxiliary.remote.behavior.IRemoteCac heService" org.apache.jcs.auxiliary.remote.RemoteCacheManager 107:Naming.lookup( "//192.168.10.59:1102/org.apache.jcs.auxiliary.remote.behavior.IRemoteCa cheService" ); "server found" "remote service = RemoteCacheServer_Stub ... endpoint:[192:168.10.59:1103](remote),objID:[806c6c..." A possible workaround could be to replace the InetAddress.getLocalHost() calls with a method similar to the snippet below to return the IP address that enables RMI calls from remote machines: public static String getLocalHostAddress() throws UnknownHostException{ return getLocalHostLANAddress().toString(); } public static InetAddress getLocalHostLANAddress() throws UnknownHostException { try { for(Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements();){ NetworkInterface iface = (NetworkInterface)ifaces.nextElement(); for(Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();){ InetAddress inetAddr = (InetAddress)inetAddrs.nextElement(); if (!inetAddr.isLoopbackAddress() && inetAddr.isSiteLocalAddress()) { return InetAddress.getByAddress(InetAddress.getLocalHost().getHostName(), inetAddr.getAddress()); } } } } catch (Exception e) { throw new UnknownHostException("Failed to determine LAN address: " + e); } throw new UnknownHostException("Failed to locate LAN address."); } I could bypass the problem by completely disabling IPv6 on our server but for the future it might be beneficial to ensure JCS runs reliably on Linux without a need to make such configuration. If you think there are other ways to sort out this issue please let me know. Regards: Zsolt P.S.: Good luck with JCS - a very nice piece of work otherwise.