Write an RMI application that allows a client to open and read a file residing on the
remote server. The interface for accessing the remote file object appears as:
import java.rmi.*; public interface RemoteFileObject extends Remote { public abstract void open(String fileName) throws RemoteException; public abstract String readLine() throws RemoteException; public abstract void close() throws RemoteException; }
That is, the client will open the remote file using the open() method, where the name of
the file being opened is provided as a parameter. The file will be accessed via the
readLine() method in the java.io.BufferedReader class in the Java API.
That is, it will read and return a line of text that is terminated by a line feed (\n), a
carriage return (\r), or a carriage return followed immediately by a line feed. Once the
end of the file has been reached, readLine() will return null. Once the file has been
read, the client will close the file using the close() method. For simplicity, we assume
the file being read is a character (text) stream. The client program need only display the
file to the console (System.out).
One issue to be addressed concerns handling exceptions. The server will have to
implement the methods outlined in the interface RemoteFileObject using standard
I/O methods provided in the Java API, most of which throw a
java.io.IOException. However, the methods to be implemented in the
RemoteFileObject interface are declared to throw a RemoteException. Perhaps
the easiest way of handling this situation in the server is to place the appropriate calls to
standard I/O methods using try-catch for java.io.IOException. If such an exception
occurs, catch it, and then re-throw it as RemoteException. The code might look like this:
Try { ... } Catch (java.io.IOException ioe){ throw new RemoteException (“IO Exception”, ioe); }
You can handle a java.io.FileNotFoundException similarly.
Consult the Java API for further details.
-------------------------------------------------------------------
This my beginning in the solution, how to write a program to perform read from a file using Java I hope a solution to help me I am novice in this area to date have not yet found out how to run the program correctly, I would like you to clarify that ... If there are errors in the code I hope I can do, you get the alert of the solution.
Thank you
----------------------------------------------------------------
\\the interface package RMI; import java.rmi.RemoteException; import java.rmi.Remote; import java.rmi.server.UnicastRemoteObject; public interface Rmi extends Remote { public abstract void open(String fileName) throws RemoteException; public abstract String readLine() throws RemoteException; public abstract void close() throws RemoteException; }
\\the server package RMI; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Server extends UnicastRemoteObject implements Rmi{ protected Server() throws RemoteException { super(); } public void open(String txtremot4) throws RemoteException { } public String readLine() throws RemoteException { return null; } public void close() throws RemoteException { } }
\\the Cilent package RMI; import java.io.BufferedWriter; import java.rmi.Naming; import java.rmi.Remote; import RMI.Rmi; import RMI.Server; import java.lang.System; public class ClinetImpl implements Remote{ public static void main (String []args){} Server S =new Server(); BufferedWriter dataout; String Message="welcom to" ; System.out.println("Sending "+ Message + "..."); dataout=new BufferedWriter (new OutputStreamWriter(sock.getOutputStream ())); dataout.write (Message,0,Message.length ()); dataout.flush(); sock.close (); Rmi hello; String url = "rmi://Localized/HELLOSERVER"; try { Naming.rebind("HELLOSERVER" , new ClinetImpl ()); System.out.println("Hello Server is ready."); }catch (Exception e) { System.out.println("Hello Server failed: " + e); }}}