Write an RMI application that allows a client to open and re

Write an RMI application that allows a client to open and read a le residing on a remote server. The interface for accessing the remote le 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 le using the open() method, where the name of the le being opened is provided as a parameter. The le will be accessed via the readLine() method. This method is implemented similarly to the readLine() method in the java.io.BufferedReaderclassintheJavaAPI.Thatis,itwillreadand returnalineoftextthatisterminatedbyalinefeed(\ ),acarriagereturn (\ ), or a carriage return followed immediately by a line feed. Once the end of the le has been reached, readLine() will return null. Once the le has been read, the client will close the le using the close() method. For simplicity, we assume the le being read is a character (text)stream.Theclientprogramneedonlydisplaytheletotheconsole (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

Solution

import java.rmi.*;

public class RMIClient

{

static final String server = \"127.0.0.1\";

public static void main(String args[]) {

try {

String host = \"rmi://\" + server + \"/RMIDateObject\";

RemoteDate dateServer = (RemoteDate)Naming.lookup(host);

System.out.println(dateServer.getDate());

}

catch (Exception e) {

System.err.println(e);

}

}

}

The RMI client

import java.rmi.*;

import java.rmi.server.UnicastRemoteObject;

import java.util.Date;

public class RemoteDateImpl extends UnicastRemoteObject

implements RemoteDate

{

public RemoteDateImpl() throws RemoteException { }

public Date getDate() throws RemoteException {

return new Date();

}

public static void main(String[] args) {

try {

RemoteDate dateServer = new RemoteDateImpl();

// Bind this object instance to the name \"RMIDateObject\"

Naming.rebind(\"RMIDateObject\", dateServer);

}

catch (Exception e) {

System.err.println(e);

}

}

}

Write an RMI application that allows a client to open and read a le residing on a remote server. The interface for accessing the remote le object appears as imp
Write an RMI application that allows a client to open and read a le residing on a remote server. The interface for accessing the remote le object appears as imp
Write an RMI application that allows a client to open and read a le residing on a remote server. The interface for accessing the remote le object appears as imp

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site