When I connect from a client to my remote object with
SuccIF name = (SuccIF) Naming.lookup(url);
the name stub is (using a println(name.toString())):
Proxy[SuccIF,RemoteObjectInvocationHandler[UnicastRef [liveRef: [endpoint:[127.0.0.1:60726](remote),objID:[171d5b92:13d2676e73c:-7fff, -3929028587100453863]]]]]
where the 127.0.0.1 does not correspond to the network interface of the client (but to the loopback). As a consequence (I guess) the server replies with a "Connection refused to host: 127.0.0.1".
How can I set the correct IP in the code? (I use the eclipse IDE)
yes, I already tried the workaround indicated in that doc (presently at http://docs.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#domain), but this does not solve the problem (any more?).
The solution (referenced but not completely explicit in the above doc) is to setup correctly the hostname on server side.
To help *nix users, check the two following commands:
rmiserver:~# hostname -fi
If you obtain a similar answer, that's the source of your problems.
To fix the problem you need to debug your dns/dhcp configuration (if your server is in a network with a dns/dhcp server). In an environment with static IP addresses and no dns (tipically a testing environment, as in my case), go to the /etc/hosts file and look for the association between your hostname (rmiserver in [http://docs.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#domain|figuration: so, ] the example) and an ip address. You will probably find a
that you can replace (see the warning below) with
or whatever is the IP from which the rmiserver is reachable from clients. This fix has effectively solved the problem in my case.
This fix may not solve all sorts of ip configuration problems, and may even damage you network configuration: apply it only if you exactly know what you are doing.
For further info about hostname configuration problems in Linux see:
I agree that the correct solution is to to fix the DNS , but java.rmi.server.hostname does work. You must have done it wrong. You have to set it before exporting any remote objects, including the Registry.