This is an RMI implementation in Java.
Our testing system is composed of four parts:
- An interface compiler (Compiler/src/*)
- A registry server
- A server
Compiler compiles the 'interface.idl' and outputs 'TestInterface.java' and 'TestInterface_Stub.java'. The user code, that wants to use our wonderful RMI framework will call the interface in 'TestInterface.java' and the implementation of that interface is in 'TestInterface_Stub.java'.
+-------------------------+
|name server (RpcRegistry)|
+-------------------------+
2. ^ / 3. ^ 1.
/ v \
+------------------+ 4. +----------------------+
|client (RpcClient)| - - - - - - - - - - - > |RMI server (RpcServer)|
+------------------+ +----------------------+
First, you start the name server. Then, you start the RMI server. The RMI server connects to the name server and tells on which host and port it is located at(1).
The client first connects the name server(2) and asks where is the RMI server based on name. The name server responds(3) and then client connects directly to the target RMI server(4).
The names are of the form:
rpc://hostname:port/service_name
'hostname' and 'port' tell which host and port the server is on and 'service_name' is the name of the service. The client uses 'service_name' to refer to a service.