Saturday, February 13

RPC Sample code in Java



Hello friends,
In this post we will see how RPC (Remote Procedure Call) mechanism can be implemented in Java.
RMI (Remote Method Invocation)  is the special mechanism to do  RPC in Java. RMI is the java flavor of RPC in other languages, but core concept is still same!

The main Idea is summarized as below:

 In this example, we make a server (RMIServer.java) to receive input text from client application and replies how many characters it received.


Server Side:
  • Create a remote interface. (myInterface.java)
  • Create a separate java file to implement the remote interface. (RMIServer.java)
  • Register the interface in RMI registry (bind with any name eg: myRMIService)
Client Side:
  • In client code, through interface name (in our case myRMIService) create a "fake remote" object reference of server within client. (RMIClient.java)
  • Through this reference access the server methods / services


Let us have a detailed look on code:

1. MyInterface.java

  1. import java.rmi.*;
  2. public interface MyInterface extends Remote
  3. {
  4.  public String countInput(String input)throws RemoteException;   
  5. }

  • It simply says about a remote service to accept a string input and gives string output.
  • Line no 4  insists that any code implementing this interface should have countInput method.

2. RMIServer.java
  1. import java.rmi.*;
  2. import java.rmi.server.*;
  3. public class RMIServer extends UnicastRemoteObject implements MyInterface
  4.     public RMIServer()throws RemoteException
  5.     { 
  6.         System.out.println("Remote Server is running Now.!!"); 
  7.     }    
  8. public static void main(String arg[])
  9.     try{ 
  10.         RMIServer p=new RMIServer();
  11.         Naming.rebind("rmiInterface",p);
  12.     }  
  13. catch(Exception e)
  14. { System.out.println("Exception occurred : "+e.getMessage()); } 
  15. }

  16.     @Override
  17.     public String countInput(String input) throws RemoteException 
  18.     {
  19.     System.out.println("Received your input "+ input+"  at server!!");
  20.         String reply;
  21.         reply="You have typed "+ input.length() +"  letters!!";
  22.         return reply;
  23.     }
  24. }
  • Line 3 says we are going to implement MyInterface interface
  • Line 13 says we register this service with name rmiInterface. Any client can access the services from this class using this name.
  • Line 19-27 implements the methods offered by interface.
3. RMIClient.java
  1. import java.rmi.*;
  2. import java.io.*; 
  3. public class RMIClient
  4. {   
  5.     public static void  main(String args[])
  6.     { 
  7.         try
  8.       { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
  9.       MyInterface p=( MyInterface)Naming.lookup("rmiInterface");
  10.         System.out.println("Type something..."); 
  11.         String input=br.readLine(); 
  12.         System.out.println(p.countInput(input)); 
  13.             }
  14.         catch(Exception e) { 
  15.             System.out.println("Exception occurred : "+e.getMessage());
  16.         }
  17.     } 
  18.  
Line 9:  Looking for the remote service using the name!
Line 12: Accessing the service using the remote object.

RESULT:


Compile the java files.



Run remote object registry  called  rmiregistry. It is used by RMI servers on the same host to bind remote objects to names.


Run the Server class.

Run the client class. You can see it is prompting for input


Type some text
Input is received by remote server
   
                                          


Client receives reply from remote server



Hope this post was useful!!


Feel free to post your suggestions and comments!

12 comments :

Abhinav Biswas said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Good job...!!

v!p!n said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Thank you Abhinav Biswas, for your feedback :)

West Bengal KPS Application said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Great Information in the post

v!p!n said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Thank you for your comment, West Bengal KPS Application..

I hope it was useful..

KARTHIK said... Best Blogger Tips [Reply to comment] Best Blogger Templates

This site is very good
cbse result 2017 class 10 I like this website

Unknown said... Best Blogger Tips [Reply to comment] Best Blogger Templates
This comment has been removed by a blog administrator.
Unknown said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Very helpful bro

v!p!n said... Best Blogger Tips [Reply to comment] Best Blogger Templates

@Unknown

Thank You!!

Unknown said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Frame Example
Full Subtractor
Functional Dependency Closure
TOC Functions
Fuzzy Logic
pragmatic processing

Vicky Tawde said... Best Blogger Tips [Reply to comment] Best Blogger Templates

Thanks for sharing this information with us, i always like to read these articles, cool..!
24JobsExam Free Job Alert Bankers Adda
Check 24JobsExam govt job Portal Placement Store

Unknown said... Best Blogger Tips [Reply to comment] Best Blogger Templates

this is rpc or rmi example?

Unknown said... Best Blogger Tips [Reply to comment] Best Blogger Templates

I am new to java programming and also RPC can you tell me how to run client and server code on separate PC and for that what changes I need to do in the code?

Post a Comment