Description
In this assignment, you are going to implement the distributed event management system
(DEMS) from Assignment 1 in CORBA using Java IDL (CORBA). In addition to the 3
customer operations introduced in Assignment 1 (namely, bookEvent, getBookingSchedule
and cancelEvent), the following operation also needs to be implemented.
• swapEvent (customerID, newEventID, newEventType, oldEventID, oldEventType)
A customer invokes this operation to change an event he/she has already booked. In
this case, the customer’s server (which receives the request from the customer) first
checks whether the customer has booked the old event, then checks with the new
event’s server (on which the new event has to be booked) whether there is available
capacity for the new event, and if both checks are successful then atomically book the
customer for the new event and cancel the old event for the customer.
These book and
cancel operations should both be successful or none of them should be done. Note that
all the checks for book and cancel operations should be done using UDP/ IP messages as
they are server-to-server communications.
In this assignment you are going to develop this modified application in CORBA using Java
IDL. Specifically, do the following:
• Write the Java IDL interface definition for the modified DEMS with all the 7 specified
operations.
• Implement the modified DEMS. You should design a server that maximizes
concurrency. In other words, use proper synchronization that allows multiple users to
correctly perform operations on the same or different records at the same time.
• Test your application by running multiple clients with the 3 servers. Your test cases
should check correct concurrent access of shared data, and the atomicity of swapEvent
operation.
Your submission will be graded for correct and efficient implementation of all the
operations in addition to correct use and implementation of mutual exclusion in accessing
shared data and proper exploitation of concurrency to achieve high performance.
MARKING SCHEME
[20%] Design Documentation: Describe the techniques you use and your architecture,
including the data structures. Design proper and sufficient test scenarios and
explain what you want to test. Describe the most important/difficult part in this
assignment. You can use UML and text description, but limit the document to 10
pages. Submit the documentation and code electronically by the due date; print the
documentation and bring it to your DEMO.
[80%] DEMO in the Lab: You have to register for a 5–10 minutes demo. Please come to
the lab session and choose your preferred demo time in advance. You cannot demo
without registering, so if you did not register before the demo week, you will lose
40% of the marks. The demo should focus on the following:
[40%] The correctness of code: Demo your designed test scenarios to illustrate
the correctness of your design. If your test scenarios do not cover all possible
issues, you will lose marks up to 40% of this part.
[40%] Questions: You need to answer some simple questions (like what we have
discussed during lab tutorials) during the demo. They can be theoretical
related directly to your implementation of the assignment.
NOTE
CORBA is an old plugin and cannot be installed in new versions of Eclipse. The latest
version in which the CORBA plugin can be installed is Eclipse Ganymede (3.4.2) that was
released in 2009.