I have gone through many posts and forums spending lot of time researching on this issue.
After months of work with Jini, we have finished writing a complex push client/server based on jini. Things work fine in local LAN but not in production environment (Murphy's law).
My setup is like this
The LUS server running JINI sends a message to all the services registered with it - thereby acting as a client too
Jini LUS -> Machine with valid static IP Service is provided by a machine under NAT (Local IP - 192.168.0.x, Global IP (firewall) - Valid static IP) Client -> Machine with valid static IP (actually the same machine which is running Jini LUS)
Eg Client: A machine under NAT registers with Jini and the server tries to send some message periodically. When requesting for the object from other machine, the lookup service returns its local IP (192.x) instead of the static IP (69.x). As a result, it throws an IOException. I assume that providing with real IP address would not help too as the firewall would not allow incoming packets if the connection is being invoked from external servers (typical firewall).
a) Does Jini behave well under NAT? I have seen mixed responses on this subject. For me, it does not work. b) If not, what are the workarounds? Should I just use some poller which changes the functionality of client as server but this increases traffic.