Google Search

Friday, July 1, 2011

MC9254 Middleware Technologies Lab ANNA UNIVERSITY LAB MANUAL An Application Using RMI

                         An Application Using RMI

Aim: To create a distributed application to download various files from various servers using RMI

  1. Create four files – file interface, file implementation, file client and fileserver
  2. In the file interface, class specify the prototype of the method that is to be implemented in the file implementation class
  3. In the file implementation class, specify the implementation coding for the method defined earlier (download file[])
  4. Try to read the contents of a file in this class
  5. In the fileclient class try to write some contents into a file
  6. In the fileserver class, try to register / bind the methods with the rmiregistry
  7. Compile  all the files and execute as specified to get the desired output.


import java.rmi.Remote;
import java.rmi.RemoteException;

public interface FileInterface extends Remote {
   public byte[] downloadFile(String fileName) throws

import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;

public class FileImpl extends UnicastRemoteObject
  implements FileInterface {
   private String name;
   public FileImpl(String s) throws RemoteException{
      name = s;

   public byte[] downloadFile(String fileName){
      try {
         File file = new File(fileName);
         byte buffer[] = new byte[(int)file.length()];
         BufferedInputStream input = new
      BufferedInputStream(new FileInputStream(fileName));,0,buffer.length);
      } catch(Exception e){
         System.out.println("FileImpl: "+e.getMessage());

import java.rmi.*;

public class FileServer {
   public static void main(String argv[]) {
         try {
         FileInterface fi = new FileImpl("FileServer");
         Naming.rebind("//", fi);
      } catch(Exception e) {
         System.out.println("FileServer: "+e.getMessage());

import java.rmi.*;

public class FileClient{
   public static void main(String argv[]) {
      if(argv.length != 2) {
        System.out.println("Usage: java FileClient fileName machineName");
      try {
         String name = "//" + argv[1] + "/FileServer";
         FileInterface fi = (FileInterface) Naming.lookup(name);
         byte[] filedata = fi.downloadFile(argv[0]);
 System.out.println(“enter the file to download”);
BufferedReader br = new BufferedReader(new InputStreamReader(;
 String newname = br.readLine();
         File file = new File(newname);
         BufferedOutputStream output = new
           BufferedOutputStream(new FileOutputStream(file.getName()));
      } catch(Exception e) {
         System.err.println("FileServer exception: "+ e.getMessage());


Server folder [,,file]

1. Compile all the java program using (javac

2. enter the (start rmiregistry) in command line

3. create stub and skeleton using (rmic FileImpl)
4.create one file i.e a.txt in server folder

5. Run the server using (java FileServer)

Client folder[file,,copy the stub and skeleton from server folder and paste it in client folder]

1. Compile all the java program using (javac

      (The next contains two parameters First is the text file created by the user second is machine IP Address)

2. Run the Client using (java FileClient   a.txt

7. next step you will give the file name to download the file (Enter the file name to download : b.txt)   

8. a.txt and b.txt contains the same content.


Post a Comment