Write an RMI application that allows a client to open and read a file residing on a 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()
Write an RMI application that allows a client to open and read a file residing on a 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. This method is implemented similarly to the readLine() method in the java.io.BufferedReaderclassintheJavaAPI.Thatis,itwillreadand returnalineoftextthatisterminatedbyalinefeed(\n),acarriagereturn (\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.Theclientprogramneedonlydisplaythefiletotheconsole (System.out). One issue to be addressed concerns handling exceptions. The server will have to implement the methods outlined in the interface RemoteFileObjectusingstandardI/OmethodsprovidedintheJavaAPI,most of which throw a java.io.IOException. However, the methods to be implementedin the RemoteFileObject interface are declaredto 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 a 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
Please make three classes
RMIClient.java
RMIServer.java
RemoteFileObject.java
Trending now
This is a popular solution!
Step by step
Solved in 5 steps