tags:

views:

232

answers:

1

Hello,

I wrote a server-client rmi application and I'm using MacOsX and Ubuntu laptops to test them.

When I start rmiregistry and the server on MacOsX, I can see the details in the netstat that the port 1099 is open and used. Then If I try to use the RMI, using the client from Ubuntu laptop - it works fine.

However, when I try things the other way around: Start rmiregistry and the server on Ubuntu, I can't see any details in the netstat about the 1099 port. And, when using the client from Macos, I can't connect to it, and receive the following exception:

Received Exception: 
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
java.net.ConnectException: Operation timed out

Which happens after the Naming.lookup happened(so the lookup went good, but the RMI itself not).

It seems that rmiregistry on Ubuntu is redirecting my client to connect 127.0.1.1, instead of the external IP of the server, which he refuses to.

What could be the cause of that?

A: 

Found 2 solutions, don't know which is right:

  1. I've checked the /etc/hosts on Ubuntu machine and saw that 127.0.1.1 was mapped to ubuntu-laptop name, so I've rewritten it to my correct external IP.

After that it worked. However, I thought that it's not very good idea, to have a static ip-address(because what if it will change dynamically?)

  1. So the workaround of this issue is to specify the hostname when starting the server using rmi.server.hostname property. So it will be something like that:

java -Djava.rmi.server.hostname=192.168.1.35 server 192.168.1.35

After that - it works.

Hippopotamus