How can I check that the connection between the server and the client is valid at all times?
Created May 4, 2012
Avi Kak Because of the difficulty of differentiating between a down connection
and an inactive connection, RMI does not provide an automatic check on
whether a connection between a server and a client is up continuously.
If a server goes down (or the server-client link breaks down) while a
client is interacting with the server, the exception
java.rmi.ConnectException will be thrown on the client side.
The client side code can catch this exception and act as desired. But
this solution obviously will not work if a client is busy doing
something else when the server goes down. If you wanted a client to
know at all times that a connection with the server was alive, you could
define for the remote server a simple ping() like method that
when invoked by the client would return something whose receipt on the
client side would indicate that the server was still up. This
ping() method could be invoked inside a separate thread on the
client side. This thread could wake up at regular intervals and check on
the server. This approach could also be used by a server to check that
the client is up continuously provided the client also implements the
Remote interface and is exported as a
UnicastRemoteObject. As before, a ping() like method
defined for such a client could be invoked by the server to ensure the
connection to the client was up and running.