Remote Procedure Invocation (RMI) allows applications to call methods from remote objects to share resources and process load between systems. Unlike other remote execution systems that only allow the transport of simple data types or specific structures, the RMI allows any Java object to be used even if the server has not reconnected. RMI allows both the client and the server to dynamically load new types of objects.
RMI applications typically consist of two separate programs: the server and the client. A typical server application creates a few remote objects, references to them to be accessible, and awaits customers to call methods on them. A typical client application calls methods on remote objects through a remote reference. RMI provides the mechanism for communication between the server and the client. Such applications are also referred to as distributed object applications.
You should use the RMI communication mechanism to implement a client-server application. More specifically, the various clients who are logged on and registered on the central server should be notified of various events taking place there.