Experiments with multi-protocol RMI in Java

  • Authors:
  • Dawid Kurzyniec;Tomasz Wrzosek;Vaidy Sunderam;Aleksander Slominski

  • Affiliations:
  • Emory University, Atlanta, GA;Emory University, Atlanta, GA;Emory University, Atlanta, GA;Indiana University, Bloomington, IN

  • Venue:
  • JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

Remote Method Invocation is an adaptation of the remote procedure call paradigm for object-oriented environments. RMI allows clients to seamlessly invoke methods of objects within remote servers. Communication between the client and server is based upon an agreed protocol stack that defines connection management rules, message formats, and data encoding.There are numerous communication libraries for Java that enable remote method invocations over different wire protocols. Standard Java RMI is based on the Java Remote Method Protocol, JRMP. RMI-IIOP [6] is alternative implementation that enables connectivity with legacy CORBA systems. JAX-RPC [5] provides means to invoke methods via SOAP, making it possible to interact with Web Services. Also, many alternative RMI implementations have been developed in order to overcome standard Java RMI and JRMP performance issues [3, 1, 2]. The common drawback of these libraries is that they are designed to be used exclusively (e.g. they usually bind clients to a particular wire protocol via stubs generated at compile time) and they do not interoperate well.RMIX is a meta-RMI framework that, rather than itself providing communication capabilities, defines a common facade through which variety of wire protocols may be used in a uniform way. Concrete protocols are supported by independent, dynamically pluggable modules, i.e. protocol service providers. Such an approach permits removal of the dependence of distributed applications on particular communication protocols: at the server side, remote objects may be uniformly exported over various protocols; at the client side, the need for statically generated stub classes is eliminated.Some projected usage scenarios of RMIX include: (1) loosely coupled distributed systems with peer-to-peer protocol negotiation (dynamic discovery is especially beneficial in this case as it makes it possible to add or upgrade protocol providers at run-time); (2) applications that are multi-protocol by nature (e.g. distributed scientific applications that communicate using an efficient native protocol but offer SOAP endpoints for monitoring and control purposes); (3) standard Java RMI applications ported to RMIX in order to eliminate the burden associated with generation and distribution of stub classes.Currently, RMIX offers two concrete protocol providers: RMIX-JRMPX, a lightweight layer over standard Java RMI, and RMIX-XSOAP, based on XSOAP [4] and using SOAP 1.1 as its wire protocol.In addition to multiple protocol support, RMIX offer other enhancements such as customizable remote object endpoints, and asynchronous invocation mode. More information about RMIX can be found at http://www.mathcs.emory.edu/rmix/.