Java RMI Assignment

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:


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.


s0. [Initialization] Create a RMI-based server which implements a test interface

[url removed, login to view] for a client connection

[url removed, login to view] 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


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


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 [url removed, login to view] interface (The

interface must extend from java.rmi.Remote. All the method declarations must

include the throws [url removed, login to view] 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.


*.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


(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.


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.

Taidot: J2EE, Java

Näytä lisää: write java code implement client server sides, rmi multiple choice questions java, rmi assignment, java rmi assignment, java rmi multiple choice question, java rmi source code assignment, distributed system implementation using rmi, small number marks reserved extensions, sign code client java rmi, rmi multiple choice questions, rmi assignment questions, uses of data structure, user tests, use of data structure in programming, tests java programming, system tests, structure stores, start java programming, s2 security, reformat data, questions of data structure, question of data structure, question manager, programming tips, programming test questions

Tietoa työnantajasta:
( 5 arvostelua ) Providence, United States

Projektin tunnus: #409069