REMOTE PROCEDURE CALL In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in another address space (commonly on another computer on a shared network), which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction.

This is a form of client–server interaction (caller is client, executor is server), typically implemented via a request–response message-passing system.

The object-oriented programming analogy is remote method invocation (RMI).

The RPC model implies a level of location transparency.

RPCs are a form of inter-process communication (IPC), in that different processes have different address spaces: if on the same host machine, they have distinct virtual address spaces, even though the physical address space is the same; while if they are on different hosts, the physical address space is different. Many different (often incompatible) technologies have been used to implement the concept.

RMI

The Java Remote Method Invocation (Java RMI) is a Java API that performs remote method invocation, the object-oriented equivalent of remote procedure calls (RPC), with support for direct transfer of serialized Java classes and distributed garbage-collection.

Remote method invocation(RMI) allow a java object to invoke method on an object running on another machine. RMI provide remote communication between java program. RMI is used for building distributed application.

Concept of RMI application A RMI application can be divided into two part, Client program Server program.

A Server program creates some remote object, make their references available for the client to invoke method on it.

A Clientprogram make request for remote objects on server and invoke method them. Stub and Skeleton are two important object used for communication with remote object.

on

Stub and Skeleton Stub act as a gateway for Client program. It resides on Client side and communicate with Skeleton object.

It establish the connection between remote object and transmit request to it.

Skeleton object resides on server program. It is responsible for passing request from Stub to remote object.

Stubs and Skeletons

RMI uses a standard mechanism (employed in RPC systems) for communicating with remote objects: stubs and skeletons.

A stub for a remote object acts as a client's local representative or proxy for the remote object.

The caller invokes a method on the local stub which is responsible for carrying out the method call on the remote object.

In RMI, a stub for a remote object implements the same set of remote interfaces that a remote object implements. When a stub's method is invoked, it does the following: 

initiates a connection with the remote JVM containing the remote object,



marshals (writes and transmits) the parameters to the remote JVM,



waits for the result of the method invocation,



unmarshals (reads) the return value or exception returned, and



returns the value to the caller.

The stub hides the serialization of parameters and the network-level communication in order to present a simple invocation mechanism to the caller. In the remote JVM, each remote object may have a corresponding skeleton (in Java 2 platformonly environments, skeletons are not required). The skeleton is responsible for dispatching the call to the actual remote object implementation. When a skeleton receives an incoming method invocation it does the following: 

unmarshals (reads) the parameters for the remote method,



invokes the method on the actual remote object implementation, and



marshals (writes and transmits) the result (return value or exception) to the caller.

Garbage Collection of Remote Object

In a distributed system, just as in the local system, it is desirable to automatically delete those remote objects that are no longer referenced by any client.

This frees the programmer from needing to keep track of the remote objects' clients so that it can terminate appropriately.

RMI uses a reference-counting garbage collection algorithm.

To accomplish reference-counting garbage collection, the RMI runtime keeps track of all live references within each Java virtual machine.

When a live reference enters a Java virtual machine, its reference count is incremented.

The first reference to an object sends a "referenced" message to the server for the object.

As live references are found to be unreferenced in the local virtual machine, the count is decremented.

When the last reference has been discarded, an unreferenced message is sent to the server.

Many subtleties exist in the protocol; most of these are related to maintaining the ordering of referenced and unreferenced messages in order to ensure that the object is not prematurely collected.

When a remote object is not referenced by any client, the RMI runtime refers to it using a weak reference.

The weak reference allows the Java virtual machine's garbage collector to discard the object if no other local references to the object exist.

The distributed garbage collection algorithm interacts with the local Java virtual machine's garbage collector in the usual ways by holding normal or weak references to objects.

As long as a local reference to a remote object exists, it cannot be garbage-collected and it can be passed in remote calls or returned to clients.

Remote objects are only collected when no more references, either local or remote, still exist.

Note that if a network partition exists between a client and a remote server object, it is possible that premature collection of the remote object will occur (since the transport might believe that the client crashed).

Because of the possibility of premature collection, remote references cannot guarantee referential integrity; in other words, it is always possible that a remote reference may in fact not refer to an existing object.

An attempt to use such a reference will generate aRemoteException which must be handled by the application.

Dynamic Class Loading RMI allows parameters, return values and exceptions passed in RMI calls to be any object that is serializable.

serialization is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer) or transmitted (for example, across a network connection link) and reconstructed later (possibly in a different computer environment).[1] When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of references,

Uses 

A method of transferring data through the wires (messaging).



A method of storing data (in databases, on hard disk drives).



A method of remote procedure calls, e.g., as in SOAP.



A method for distributing objects, especially in component-based software engineering such



as COM, CORBA, etc.



A method for detecting changes in time-varying data.

RMI uses the object serialization mechanism to transmit data from one virtual machine to another and also annotates the call stream with the appropriate location information so that the class definition files can be loaded at the receiver.

When parameters and return values for a remote method invocation are unmarshalled to become live objects in the receiving JVM, class definitions are required for all of the types of objects in the stream.

The unmarshalling process first attempts to resolve classes by name in its local class loading context (the context class loader of the current thread).

RMI also provides a facility for dynamically loading the class definitions for the actual types of objects passed as parameters and return values for remote method invocations from network locations specified by the transmitting endpoint.

This includes the dynamic downloading of remote stub classes corresponding to particular remote object implementation classes (and used to contain remote references) as well as any other type that is passed by value in RMI calls, such as the subclass of a declared parameter type, that is not already available in the class loading context of the unmarshalling side. To support dynamic class loading, the RMI runtime uses special subclasses of java.io.ObjectOutputStream and java.io.ObjectInputStream for the marshal streams that it uses for marshalling and unmarshalling RMI parameters and return values.

The UnicastRemoteObject Class

The class java.rmi.server.UnicastRemoteObject provides support for creating and exporting remote objects.

The class implements a remote server object with the following characteristics: 

References to such objects are valid only for, at most, the life of the process that creates the remote object.



Communication with the remote object uses a TCP transport.



Invocations, parameters, and results use a stream protocol for communicating between client and server.

RMI Transport Protocol The wire format for RMI is represented by a Stream.

The terminology adopted here reflects a client perspective.

Out refers to output messages and In refers to input messages.

The contents of the transport header are not formatted using object serialization. Stream: Out In The input and output streams used by RMI are paired. Each Out stream has a corresponding In stream. An Out stream in the grammar maps to the output stream of a socket (from the client's perspective). An In stream (in the grammar) is paired with the corresponding socket's input stream. Since output and input streams are paired, the only header information needed on an input stream is an acknowledgment as to whether the protocol is understood; other header information (such as the magic number and version number) can be implied by the context of stream pairing .

Format of an Output Stream An output stream in RMI consists of transport Header information followed by a sequence of Messages. Alternatively, an output stream can contain an invocation embedded in the HTTP protocol. Out: Header Messages HttpMessage

Format of an Input Stream There are currently three types of input messages: ReturnData, HttpReturn and PingAck. ReturnData is the result of a "normal" RMI call. An HttpReturn is a return result from an invocation embedded in the HTTP protocol. A PingAck is the acknowledgment for a Ping message. In:

ProtocolAck Returns ProtocolNotSupported HttpReturn

Exceptions During Remote Object Export When a remote object class is created that extends UnicastRemoteObject, the object is exported, meaning it can receive calls from external Java virtual machines and can be passed in an RMI call as either a parameter or return value. An object can either be exported on an anonymous port or on a specified port. For objects not extended from UnicastRemoteObject, the java.rmi.server.UnicastRemoteObject.exportObject method is used to explicitly export the object. Exception java.rmi.StubNotFoundException

Context Class of stub not found. Name collision with class of same name as stub causes one of these errors:  

Stub can't be instantiated Stub not of correct class

Bad URL due to wrong codebase. Stub not of correct class. java.rmi.server.SkeletonNotFoundException Class of skeleton not found. Name collision with class of same name as skeleton causes one of these errors:  

Skeleton can't be instantiated Skeleton not of correct class

Bad URL due to wrong codebase. Skeleton not of correct class. java.rmi.server.ExportException

The port is in use by another VM.

Exceptions During RMI Call

Exception

Context

java.rmi.UnknownHostException

Unknown host.

java.rmi.ConnectException

Connection refused to host.

java.rmi.ConnectIOException

I/O error creating connection.

java.rmi.MarshalException

I/O error marshaling transport header, marshaling call header, or marshaling arguments.

java.rmi.NoSuchObjectException

Attempt to invoke a method on an object that is no longer available.

java.rmi.StubNotFoundException

Remote object not exported.

java.rmi.activation.ActivateFailedException

Thrown by RMI runtime when activation fails during a remote call to an activatable object

Creating a Simple RMI application involves following steps   

Define a remote interface. Implementing remote interface. create and start remote application



create and start client application

Define a remote interface A remote interface specifies the methods that can be invoked remotely by a client. Clients program communicate to remote interfaces, not to classes implementing it. To be a remote interface, a interface must extend the Remote interface of java.rmi package. import java.rmi.*; public interface AddServerInterface extends Remote { public int sum(int a,int b); }

Implementation of remote interface For implementation of remote interface, a class must either extend UnicastRemoteObject or use exportObject() method of UnicastRemoteObject class. import java.rmi.*; import java.rmi.server.*; public class Adder extends UnicastRemoteObject implements AddServerInterface { Adder()throws RemoteException{ super(); } public int sum(int a,int b) { return a+b; } }

Create AddServer and host rmi service You need to create a server application and host rmi service Adder in it. This is done using rebind()method of java.rmi.Naming class. rebind() method take two arguments, first represent the name of the object reference and second argument is reference to instance of Adder

import java.rmi.*; import java.rmi.registry.*; public class AddServer{ public static void main(String args[]){ try{ AddServerInterface addService=new Adder(); Naming.rebind("AddService",addService); //addService object is hosted with name AddService.

}catch(Exception e){System.out.println(e);} } }

Create client application Client application contains a java program that invokes the lookup() method of the Naming class. This method accepts one argument, the rmi URL and returns a reference to an object of typeAddServerInterface. All remote method invocation is done on this object.

REMOTE PROCEDURE CALL.pdf

Sign in. Loading… Whoops! There was a problem loading more pages. Retrying... Whoops! There was a problem previewing this document. Retrying.

594KB Sizes 2 Downloads 159 Views

Recommend Documents

Remote Procedure Calls.pdf
Sign in. Loading… Whoops! There was a problem loading more pages. Retrying... Whoops! There was a problem previewing this document. Retrying.

REMOTE PROCEDURE CALL.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. Main menu.

Disciplinary Procedure
informally, as such something similar to the Corporate Responsibility & Member Action Pyramid in the drugs & alcohol policy may be used if appropriate.

Cheap Wireless Bluetooth Remote Control Multimedia Remote ...
Cheap Wireless Bluetooth Remote Control Multimedia Remote Music Control Camera Shutter for Smartphone.pdf. Cheap Wireless Bluetooth Remote Control ...

Standard operating procedure for evaluation procedure for CVMP ...
Standard operating procedure – PUBLIC. SOP/V/4112 15-DEC-20. Page 6/10. 5.0. Final SA. 5.1. Adoption of scientific advice. 5.2. Send to applicant. No. 5.5. Clarification? 2.0. Yes. Yes. 5.3. Archive and update tracking. 5.4. Include in post- meetin

APNA DHAN PROCEDURE
In C: Drive. (i). For 64 bit system. (a) Go to C:/Program Files/CSC Morpho/Morpho Fingerprint Scanner and copy java.policy and policy-replace-batch-morpho.bat files. (b) Then go to C:/Program Files(x86)/Java/jre1.8.0_45/lib/security and replace and p

apna dhan procedure - Panchayat
Page 39 of 48. 55. After Completing the registration process, again login in to APNA DHAN Service. 56. After login into APNA DHAN Service, VLE finger scan page is open and security warning pop up comes. To remove this Pop Up click on checkbox as show

Procedure Manual.pdf
Academic Affairs, to provide data-driven answers and information in a timely ... to help you as you make decisions regarding college planning, programming,.

Tharpanam procedure. - DoCuRi
Madhu nakthamuthoshasi madu math parthivagam raja madhu dhourasthu na pitha ... Madhumanno vanaspathir madhu magma asthu soorya,. Maadweer gavo ...

Parliamentary Procedure Table
Majority. Affirmative vote only. To call for division. No. No. No. Call for division by one (1) person forces re-vote. No. To appeal a decision of the chairperson. Yes.

Computer programmable remote control
Apr 3, 2001 - 180 (preferably a hard disk) as knoWn in the art. The general ..... commands against those of the screen objects in the data base. If a match is ...

Remote controls.pdf
Live view reduces camera shake from mirror. movement. • Before buying a Remote - make sure the Remote will work with and. connect to your camera - Costs around $50 for most Remotes. • Helps if camera has a bulb or unlimited shutter speed feature.

Remote reservoir resistivity mapping
Mar 11, 2004 - do not exceed 0.1 degree and the total amplitude variations of the source currents .... described in M. Zhdanov and G. Keller, (1994, op. cit.) or.

remote..pdf
interactive symbol, at the same time another among us said that it is pop up notification symbol, and. like this the discussion was going on but till the last that was not proved what does that button. symbol and the verbal communication Active means

Computer programmable remote control
Apr 3, 2001 - development software and used to prepare a screen object corresponding to the programmed remote control unit 200A of the multimedia ...

remote-sensing.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. remote-sensing.

Remote reservoir resistivity mapping
Mar 11, 2004 - tion increases as a fractional poWer of source strength,. betWeen MN5 .... In an alternative embodiment, the inverted resistivity depth images ...

procedure filing complaints.pdf
Office of the Ombudsman. Ombudsman Building, Agham Road,. North Triangle, Diliman, Quezon City. Telephone Nos. (+632) 927-4102; 927-2404;. 0926-699- ...

Incomplete Grade Procedure -
timeline for removal of the “IC” grade. This agreement ... The exact timeline is at the instructor's discretion however the ... Student's Name: (Last). (First). GSC ID:.