|
||||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||||
See:
Description
| Packages | |
|---|---|
| org.objectweb.fractal.api.control | |
| org.objectweb.fractal.jonathan | Provides Fractal compliant sub classes of some Jonathan classes. |
| org.objectweb.fractal.rmi | Provides a protocol, an object adapter and a binder component. |
| org.objectweb.fractal.rmi.io | 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. |
| org.objectweb.jonathan.apis.binding | Provides a set of classes and interfaces for application level identifiers, naming contexts and binders. |
| org.objectweb.jonathan.apis.kernel | |
| org.objectweb.jonathan.apis.presentation | Provides a set of classes and interfaces for presentation protocols (marshallers and unmarshallers). |
| org.objectweb.jonathan.apis.protocols | Provides a set of classes and interfaces for communication protocols. |
| org.objectweb.jonathan.apis.protocols.ip | Provides a set of classes and interfaces refining the binding abstractions in the case of IP protocols, and introduces some connection management abstractions. |
| org.objectweb.jonathan.apis.resources | Provides a set of classes and interfaces dealing with resource management. |
| org.objectweb.jonathan.apis.stub_factories | Provides an interface for stub factories. |
| org.objectweb.jonathan.libs.helpers | |
| org.objectweb.jonathan.libs.protocols.tcpip | Provides a set of classes giving access to the TCP/IP protocol stack. |
| org.objectweb.jonathan.libs.resources | Provides implementations for various resources and managers. |
| org.objectweb.jonathan.libs.resources.tcpip | Provides a default implementation for TCP/IP connection management. |
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.
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||||