Unformatted text preview: terface does not contain executable code. RMI supports two classes that
implement the same interface. The first class is the implementation of the behavior, and it runs on
the server. The second class acts as a proxy for the remote service and it runs on the client. This
is shown in the following diagram. A client program makes method calls on the proxy object, RMI sends the request to the remote
JVM, and forwards it to the implementation. Any return values provided by the implementation are
sent back to the proxy and then to the client's program.
RMI Architecture Layers
With an understanding of the high-level RMI architecture, take a look under the covers to see its
The RMI implementation is essentially built from three abstraction layers. The first is the Stub and
Skeleton layer, which lies just beneath the view of the developer. This layer intercepts method
calls made by the client to the interface reference variable and redirects these calls to a remote
The next layer is the Remote Reference Layer. This layer understands how to interpret and
manage references made from clients to the remote service objects. In JDK 1.1, this layer
connects clients to remote service objects that are running and exported on a server. The
connection is a one-to-one (unicast) link. In the Java 2 SDK, this layer was enhanced to support
the activation of dormant remote service objects via Remote Object Activation.
The transport layer is based on TCP/IP connections between machines in a network. It provides
basic connectivity, as well as some firewall penetration strategies. 4 Manisha Akolkar INTERNATIONAL INSTITUTE OF INFORMATION TECHNOLOGY
P-14, Pune Infotech Park, Hinjaw adi, Pune – 411 027 By using a layered architecture each of the layers could be enhanced or replaced without
affecting the rest of the system. For example, the transport layer could be replaced by a UDP/IP
layer without affecting the upper layers.
Stub and Skeleton Layer
The stub and skeleton layer of RMI lie just beneath the view of the Java developer. In this layer,
RMI uses the Proxy design. In the Proxy pattern, an object in one context is represented by
another (the proxy) in a separate context. The proxy knows how to forward method calls between
the participating objects. The following class diagram illustrates the Proxy pattern. In RMI's use of the Proxy pattern, the stub class plays the role of the proxy, and the remote
service implementation class plays the role of the RealSubject.
A skeleton is a helper class that is generated for RMI to use. The skeleton understands how to
communicate with the stub across the RMI link. The skeleton carries on a conversation with the
stub; it reads the parameters for the method call from the link, makes the call to the remote
service implementation object, accepts the return value, and then writes the return value back to
In the Java 2 SDK implementation of RMI, the new wire protocol has made skeleton classes
obsolete. RMI uses reflection to make the co...
View Full Document
This note was uploaded on 07/15/2011 for the course ECO 2023 taught by Professor Mr.raza during the Summer '10 term at FAU.
- Summer '10