Categories
discuss

RMI RemoteException

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 …

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?

Stack Trace:

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.

Answer

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 /etc/hosts file.

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) ...).

Why?

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 127.0.0.1.

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.

Source: stackoverflow
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Privacy Policy, and Copyright Policy. Content is available under CC BY-SA 3.0 unless otherwise noted. The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 © No Copyrights, All Questions are retrived from public domain..