Write a program to implement RPC (Remote Procedure Call)
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
- import java.rmi.*;
- public interface MyInterface extends Remote
- {
- public String countInput(String input)throws RemoteException;
- }
- 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
- import java.rmi.*;
- import java.rmi.server.*;
- public class RMIServer extends UnicastRemoteObject implements MyInterface
- {
- public RMIServer()throws RemoteException
- {
- System.out.println("Remote Server is running Now.!!");
- }
- public static void main(String arg[])
- {
- try{
- RMIServer p=new RMIServer();
- Naming.rebind("rmiInterface",p);
- }
- catch(Exception e)
- { System.out.println("Exception occurred : "+e.getMessage()); }
- }
- @Override
- public String countInput(String input) throws RemoteException
- {
- System.out.println("Received your input "+ input+" at server!!");
- String reply;
- reply="You have typed "+ input.length() +" letters!!";
- return reply;
- }
- }
- 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
- import java.rmi.*;
- import java.io.*;
- public class RMIClient
- {
- public static void main(String args[])
- {
- try
- { BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
- MyInterface p=( MyInterface)Naming.lookup("rmiInterface");
- System.out.println("Type something...");
- String input=br.readLine();
- System.out.println(p.countInput(input));
- }
- catch(Exception e) {
- System.out.println("Exception occurred : "+e.getMessage());
- }
- }
- }
Line 9: Looking for the remote service using the name!
Line 12: Accessing the service using the remote object.
RESULT:
Compile the java files.
RESULT:
Compile the java files.
No comments:
Post a Comment