A Configurable RMI Mechanism for Sharing Distributed Java Objects

Many distributed programming environments have been designed to support distributed shared objects over the Internet. Most of these environments (Java RMI and CORBA, for example), support client-server applications where distributed objects reside on servers, which execute all methods (remote or local) invoked on the objects. Traditional client-server models do not support client-side object caching and the local access it provides. We believe that object caching is critical to distributed applications, especially over the Internet, where latency and bandwidth are highly variable. We have developed a configurable and efficient remote method invocation mechanism that provides the same interface as Java RMI, while extending its functionality so that shared objects can be cached on the accessing nodes. The mechanism, called Javanaise, is based on the caching of clusters, which are groups of interdependent Java objects. We have implemented a prototype consisting of a preprocessor that generates the required proxy classes from the application interfaces and a run-time environment that uses system classes to manage the consistency of cluster replicas cached on client nodes. We describe the motivation for the work, the design choices made for the Javanaise clustering mechanism, the implementation principles for managing Javanaise clusters, and the results from three experiments that compare the performance of Javanaise with Java RMI.

[1]  Galen C. Hunt,et al.  The Coign automatic distributed partitioning system , 1999, OSDI '99.

[2]  Sacha Krakowiak,et al.  Persistent shared object support in the Guide system: evaluation & related work , 1994, OOPSLA '94.

[3]  Roger Riggs,et al.  Pickling State in the Java System , 1996, Comput. Syst..

[4]  Eric Bruneton JavaPod: an Adaptable and Extensible Component Platform , 2000 .

[5]  Miguel Castro,et al.  HAC: hybrid adaptive caching for distributed storage systems , 1997, SOSP.

[6]  Roger Riggs,et al.  A Distributed Object Model for the Java System , 1996, Comput. Syst..

[7]  Miguel Castro,et al.  Providing Persistent Objects in Distributed Systems , 1999, ECOOP.

[8]  Thomas Ledoux,et al.  OpenCorba: A Reflektive Open Broker , 1999, Reflection.

[9]  Jacques Mossière,et al.  Persistent shared object support in the Guide system: evaluation & related work , 1994, OOPSLA 1994.

[10]  Roy H. Campbell,et al.  Reflective ORBs: Supporting Robust, Time-Critical Distribution , 1997, ECOOP Workshops.

[11]  Marc Shapiro,et al.  Structure and Encapsulation in Distributed Systems: The Proxy Principle , 1986, ICDCS.

[12]  R. G. G. Cattell,et al.  Object operations benchmark , 1992, TODS.

[13]  A. Watson,et al.  OMG (Object Management Group) architecture and CORBA (common object request broker architecture) specification , 2002 .

[14]  Aaron Kershenbaum,et al.  Mobile Agents: Are They a Good Idea? , 1996, Mobile Object Systems.

[15]  John T. Stasko,et al.  Robust state sharing for wide area distributed applications , 1998, Proceedings. 18th International Conference on Distributed Computing Systems (Cat. No.98CB36183).

[16]  Roy Friedman,et al.  Implementing a Caching Service for Distributed CORBA Objects , 2000, Middleware.

[17]  Galen C. Hunt,et al.  A guided tour of the Coign automatic distributed partitioning system , 1998, Proceedings Second International Enterprise Distributed Object Computing (Cat. No.98EX244).

[18]  George F. Riley,et al.  Efficient Implementation of Java Remote Method Invocation (RMI) , 1998, COOTS.