Server implementation objects may either inherit from
javax.rmi.PortableRemoteObject or they may implement a remote interface
and then use the exportObject method to register themselves as a server object.
The toStub method takes a server implementation and returns a stub that
can be used to access that server object.
The connect method makes a Remote object ready for remote communication.
The unexportObject method is used to deregister a server object, allowing it to become
available for garbage collection.
The narrow method takes an object reference or abstract interface type and
attempts to narrow it to conform to
the given interface. If the operation is successful the result will be an
object of the specified type, otherwise an exception will be thrown.