My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information

RipeRMI is a bug-fixed and feature-enhanced fork of the LipeRMI-project which make bi-directional Java RMI easy and straightforward. Our main features include:

  • Simple, bi-directional RMI (the server can call back client listeners over the same connection)
  • Cyclic calls supported (server calls client, which again calls the server, which then can call the client again ...)
  • Interfaces are passed automatically by reference, Serialiable objects by value
  • Approx. 80% faster than LipeRMI with many bugs and deadlocks fixed (our roundtrip time is between 200-1000┬Ás for calls to localhost, which is manly dominated by the network-layer latency)

For questions, please refer to the JSPF Support Group.


Creating a server

// Create a CallHandler that manages the exported objects 
CallHandler callHandler = new CallHandler();
callHandler.registerGlobal(MyInterface.class, myService);

// Create a server that exports the CallHandler to the network
Server server = new Server();
server.bind(55661, callHandler);

Creating clients

// Create a CallHandler that manages imported objects and connect it to a server
CallHandler callHandler = new CallHandler();
Client client = new Client("", 55661, callHandler);

// Get an exported interface.
MyInterface service = client.getGlobal(MyInterface.class);  

Benchmark Results

Here some results of the internal test.benchmarks run, performed on a MacBook 2.4 GHz (Snow Leopard, Java 6) and the results of a similar benchmark performed on an Ubuntu 10.4 quad core (3.3GHz, Java 7) server.

MacBook Pro (1k passes)
Callback result: 1000 calls took 1062.0 ms.
Void result: 1000 calls took 1174.0ms.
Int result: 1000 calls took 885.0 ms.

Ubuntu Server (10k passes)
Callback result (single): 10000 calls took 4184.0 ms.
Callback result (10 objects sent on same call): 1000 calls took 497.0 ms.
Void result: 10000 calls took 3167.0ms.
Int result: 10000 calls took 2566.0 ms.
Powered by Google Project Hosting