Webservice Implementation of the Distributed Course Registration System
In this assignment, you are going to implement the Distributed Course Registration System (DCRS) from Assignment 1 as a webservice. Specifically, design the service from Assignment 1 (using the same functions and exceptions) by using proper annotations and implement the server. You should build end point files using the wsgen command before publishing the service, and also import wsdl files using the wsimport command.
As in Assignment 1, the server should be initialized with a list of courses and their associated information (such as course id, capacity, pre-requisite courses, and co-requisite courses) in main memory. Furthermore, you should not load information about all the students into memory when the server starts. When a server function is invoked, the server should load the student information (such as student id, name, maximum number of registered courses, list of taken courses, and the list of registered courses) into memory and also write the information back to the file if necessary. An example student file may look like the following:
Student ID: 9700001
Maximum number of courses that may be registered in this term: 3
Courses that have been taken: COMP6001
Courses that have been registered: COMP6321, COMP6002
Your server design should maximize the concurrency in course registration usage. In other words, use proper synchronization that allows multiple students register for the same or different courses at the same time. Marking Scheme [40%] Design Documentation: Describe the techniques you use and your architecture, including the data structure and how you separate the client and server code. Design proper and sufficient testing scenarios and explain what you want to test (Hint: rules, exceptions and synchronization). Describe the most important / difficult part in this assignment. You can use UML and text description, but limit the document to a reasonable number of pages. Submit the documentation and code by the due date; print the documentation and bring it to your DEMO.
[40%] DEMO in Lab: You have to register for a 5-minutes demo. Please come to the lab session and choose your preferred demo time in advance. There is no instant registration during the demo week; so if you do not register before the demo week, you will lose 40% of the mark. [10%] Demo that service is published in the server side and a client should download and generate necessary files. [30%] Correctness of code: Demo your designed testing scenarios to illustrate the correctness of your design. If your testing scenarios do not cover all possible issues, you'll lose part of mark up to 30%. [20%] Questions: You need to answer some simple questions (like what we've discussed during lab tutorials) during the demo.