Any idea why do I get RemoteException while trying to invoke methods on Unix machine from Windows?
I am inside the network and don’t think this is because of firewall problem as I can do “telnet” from Windows to Unix box after starting the RMI server at the unix box. I also could not understand why is it going to local loopback IP?
RemoteException occured, details java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: connect java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: connect
Many thanks in advance.
You probably don’t have your hostname configured properly on your Linux box. I bet if you
ping $(hostname) from your Linux box, it will ping
127.0.0.1. Usually this is because of an entry in your
There’s a couple of ways to solve the problem. The hard way would be to get your Linux box to resolve its own hostname to its IP address properly. You can edit your
/etc/hosts file, setup your DNS server, whatever you’ve got to do. The challenge is that while this may make things more technically correct, you run the risk of breaking things that relied on the old behavior.
The path of least change would be to set the system property
java.rmi.server.hostname to the hostname or IP address of your Linux box. (i.e.
java -Djava.rmi.server.hostname=$(hostname) ...).
The Java RMI registration server is actually a network wide registration server. Objects on other machines can bind themselves to this registry.
When a remote object is registered, the registration includes the network address as part of the registration. By default, the address it uses is ‘the IP address of the local host, in “dotted-quad” format.’ In your setup, this address is
When your Windows box contacts the registration service for the address of the remote object, it gets back
127.0.0.1. It then tries to contact the remote object at that address. That’s why it’s going to the loopback address.