Fractal RMI Documentation


org.objectweb.fractal.rmi Provides a protocol, an object adapter and a binder component. Provides a marshaller and unmarshaller factory component.
org.objectweb.fractal.rmi.registry Provides a Fractal components registry component.
org.objectweb.fractal.rmi.stub Provides a stub and skeleton factory component based on ASM.


Fractal RMI is a set of Fractal components that provide a binding factory to create distributed bindings between Fractal components. These components are based on the Jonathan framework. They can be used with any Fractal implementation.

In order to provide distributed bindings between Fractal components, Java RMI cannot be used, unless the Fractal Specification is changed to specify that each interface provided or required by a component must extend the java.rmi.Remote interface, and that all the methods of these interfaces must declare a java.rmi.RemoteException exception. For the same reason, the Jeremie personality of Jonathan cannot be used, since it is an RMI-like personality. The David personality of Jonathan could perhaps have been used for this purpose, but we found this solution too "heavy" (David requires many CORBA classes) and not very practical (in particular because of the IDL compiler). Note that these remarks apply to Jeremie too.

We therefore decided to implement our own "personality" on top of the Jonathan framework alone, without its personalities. This new "personality" is small and efficient. Moreover it does not need a static stub compiler, and does not impose constraints on remote interfaces, unlike Java RMI (the Interface interface plays the role of the Remote interface: the objects that implement this interface, namely the interfaces provided by Fractal components, are passed by reference, while all other objects are passed by value).

The set of Fractal components provided by Fractal RMI is depicted in red in the figure below (the black and gray components are provided by the core Jonathan framework). This figure also shows how these components can be bound to each other to get a functional Fractal RMI Binder component, which provides a NamingContext interface. Note that this "flat" architecture can be made more readable by using composite components and shared components.

Figure 1: "flat" architecture of the Fractal RMI binder.