This is the core code that implements the Apache River Container. The purpose of the Apache River Container is to host Jini services and clients using the libraries provided by Apache River.
Jini services and clients have some special requirements.
First, they need to have particular control over the codebase. For exported objects, the download code needs to be made available through a web server (there is talk that in the future, the clients might be able to load code directly from a repository server like Maven does. There‘s no reason this can’t be added to the River Container), and the location of that web server needs to be included in the codebase annotation generated by the RMIClassLoader. Also the codebase generally doesn't call out the same jar file that contains the implementation code. Rather, it calls out a special “download jar” that only contains the classes that should be present on the client. Further, the API should be downloadable.
Second, Jini clients and services make heavy use of remote code, so they need to be run in a VM with security enabled.
So, the River Container has provisions for this. Also, it has the flexibility to allow deployments to take various forms.
The following documents describe parts of the River Container architecture: