Project Detail

Java RMI Assignment  

Java RMI Assignment is project number 409069
posted at Freelancer.com. Click here to post your own project.

 

| More
Free Trial For New Buyers
 

Status:

Selected Providers: is00hcw

Budget: $30-250

Created: 03/27/2009 at 9:05 EDT

Bid Count: 18

Average Bid:
N/A

03/30/2009 at 9:05 EDT

Project Creator: talend
Employer Rating: 10/1010/1010/1010/1010/1010/1010/1010/1010/1010/10 (5 reviews)

Bid On This Project
 

Description

The aim is to build a system which allows a school pupil to
practise multiple choice tests in math. Design and implement a RMI-based Client / Server
communication system in Java, which will do the following:

Client:

c1. Connect to server via client_stub.
c2. Read and display the prompt message sent (see step s2 in server) by the server.
c3. Receives and displays the first math question plus three possible answers from
the server.
c4. User then selects and inputs only one answer and the client program sends the
answer to the server. This process is repeated three times to complete all 3
questions from the server Questions database
c5. After the test is over the client accepts and displays the test results and score
from the server.

Server:

s0. [Initialization] Create a RMI-based server which implements a test interface
s1.Wait for a client connection
s2.When a client connection is accepted send an acknowledgement (a welcome
message) as a sting of text.
s3. From Questions database, server sends the first test questions plus three
possible answers to the client.
s4. Receives the answer from the client. Stores and evaluates the answer. This
process is repeated three times.
s5. After that the server sends all results and score to the client.
s6. Close the connection to the client and then loop back and wait for another
connection.


Questions database:
Q1: (A + B)*(A+B)
1. A*A + B*B
2. A*A +A*B + B*B
3. A*A +2*A*B + B*B (correct)
Q2: (A + B)*(A - B)
1. A*A + 2*B*B
2. A*A - B*B (correct)
3. A*A -2*A*B + B*B
Q3: sin(x)*sin(x) + cos(x)*cos(x)
1. 1 (correct)
2. 2
3. 3

Note: All the communication between the Client and the Server should be in the form of
strings.

Programming Notes

Here are a few tips/thoughts to help you with this assignment:
· You must use the three questions from Questions database (see above).
· Define the remote methods to allow the client to send the answers to the server.
· Implement these methods as a remote object.
· Write a client to invoke the remote methods.
· Use the rmic program to produce a stub and a skeleton.
· Use the rmiregistry tool to register the server.

Defining the Interface

In this coursework, firstly you define the server methods. The server receives and reads
the list of answers selected by the client. Then it checks that this answer is valid
(distinct numbers in the range 1-3):
· If not, return an error message to the client.
Page 3 of 4
· If yes, check answers and see if the client has answered correctly, then
return the score to the client.
The server is comprised of an interface and a class. The interface provides the
definition for the methods that can be called from the client. Essentially the interface
defines the client's view of the remote object. The class provides the
implementation. Define these methods in a Java TestInfo interface. Derive the
interface from the Remote class or from java.io.Serializable interface (The
interface must extend from java.rmi.Remote. All the method declarations must
include the throws java.rmi.RemoteException clause).


Implementing the Remote Objects on the Server

Write the TestInfoImpl class that implements the TestInfo interface and the
TestServer class that creates an object and registers it on the server.
1. Write the TestInfoImpl class that contains the actual methods with questions and
to receive the answers.
2. Derive the class from the UnicastRemoteObject class
3. Create a TestServer class with a method that creates an object. Register this
object with the RMI remote object registry, name and bind it to a port using the
Naming class and the bind() or rebind() method.

Programming the Client

Produce the TestClient class that locates the server and invokes the remote methods.
The command to start the client will be
$ java TestClient rmi://machine/remote_object
Where the URL refers to the registry(usually on the same machine that the server runs
on, probably localhost).
Retrieve the remote object using the Naming class, by passing the use of the registry to
the lookup() method. Then make the remote method call on this object.

Producing the Distributed Objects

Finally, compile and run the distributed objects.

1. Compile all the classes you have written.

2. Your Java RMI programs are only a part of the application. It uses two other pieces
of code called the stub and the skeleton. These reformat the method parameters and
encapsulate them into a RMI data unit. This process is called marshalling. Run the
command rmic TestInfoImpl to generate the stub and the skeleton.

3. Launch the registry rmiregistry. Be sure to run the registry in the RMI server
directory that contains the stub and skeleton.

4. Run the server and the client on a same machine and directory. Then try to run the
client and the server on two different machines.

Submission

*.java source code

Write a report on the design and implementation of your solution and answers, showing
code and results:
(i) a class diagram outlining the class structure for your proposed
solution.

(ii) a set of summary tables describing the fields, constructors and methods for
each class.

(iii) a print out of the Java source code of your complete program.

Extensions

A small number of marks are reserved for extensions. These could be to have GUI on
client and server sides which send the range of possible choices to the client and
validate entries, or to be able to specify a security manager which determines its
security policy by using the RMISecurityManager.


Additional information:
I would like the programming to be very simple in its design i would also like it to be well commented.

Job Type

Messages Posted:0 View project clarification board Post message on project clarification board

Bid On This Project
 

If you are the project creator or one of the bidders Log In for more options

Bids are hidden by the project creator. Log in as the project creator or as one of the bidders to view bids. You will not be able to bid on this project if you are not qualified in one of the job categories. To see your qualifications click here.


    Bid on this Project