A stub for a remote object acts as a client’s
local representative or proxy for the remote object.
The caller invokes a method on the local stub which
is responsible for carrying out the method call on
the remote object. In RMI, a stub for a remote
object implements the same set of remote interfaces
that a remote object implements. When a stub’s
method is invoked, it does the following:
1.initiates a connection with the remote JVM containing the remote object,
2.marshals (writes and transmits) the parameters to the remote JVM,
3.waits for the result of the method invocation,
4.unmarshals (reads) the return value or exception returned,
and returns the value to the caller.
* The stub hides the serialization of parameters and the
network-level communication in order to present a simple invocation mechanism to the caller.
In the remote JVM, each remote object may have a corresponding skeleton
(in Java 2 platform-only environments, skeletons are not required).
The skeleton is responsible for dispatching the call to the actual remote object implementation.
When a skeleton receives an incoming method invocation it does the following:
1.unmarshals (reads) the parameters for the remote method,
2.invokes the method on the actual remote object implementation, and
3.marshals (writes and transmits) the result (return value or exception) to the caller.