I am confused a bit about Java RMI codebase property.
In here http://docs.oracle.com/javase/6/docs/technotes/guides/rmi/codebase.html it says that codebase is set in client because client can create custom subclasses of some class so the server needs to download the class.
Do I understand that client codebase will matter only if one of the parameters to the remote method is some class that is not implementing remote interface? Because if it is implementing remote interface server does not need to download anything because on the server side there will be stubs.
But why there is a need for codebase needed on the server side. It says that
The client requests the class definition from the codebase. The codebase the client uses is the URL that was annotated to the stub instance when the stub class was loaded by the registry. Back in step 1, the annotated stub for the exported object was then registered with the Java RMI registry bound to a name.
Why does the client need to request stub class definition if it uses only stub implementation.