CE4208 Distributed Systems
Layered DS Assignment
1.Overview
CE4208 Distributed Systems Layered Distributed Systems Assignment
Your task is to develop a web application (outlined below) and deploy it on a virtual machine. Feel free to use any Jakarta EE container and database you like. However, your sources must be submitted as a NetBeans project. All features should be implemented using Jakarta EE 10 (EJB, entity classes, persistence API) and JSF/HTML only. Do not use any other frameworks such as Hibernate or Spring. If you really “need” to use any other framework/library, you must first confirm with me that it is ok to use these.
For any queries, please refer to the question and answer section on the module’s Discussion Brightspace page.
2. Description
Your task is to write an online job marketplace (think freelancer, upwork, gigster or something similar). Job requester post their job descriptions to the marketplace and registered freelancer can offer to undertake the job. For this project, requester include a fixed price for the job to be undertaken – there is no bidding/negotiating. Further, there is no need to implement a real payment system – freelancer are paid with virtual tokens only.
2.1 Functional Requirements
Access to the job marketplace is limited – you must provide an authentication scheme. Access rights are role based, where your system provides three roles: provider, freelancer and administrator.
• Provider can perform the following tasks:
o Create a job description (job is marked “open”). A job description includes:
▪ Title
▪ Unique Job ID (should be generated by the system)
▪ Keywords
▪ Job description
▪ Payment offer
o List all job descriptions posted by the provider.
o Remove an open job description.
o View profiles of any freelancer that offered to undertake a job description.
o Accept a freelancer for a posted job description (assign the job to a freelancer that offered to undertake the job). Once a freelancer has been accepted, the job will be marked as “closed” .
o Mark a job description as completed (when a freelancer has completed the job). Once a job is completed, the “payment” will be assigned to the freelancer.
• Freelancer can perform the following:
Page 1 of 3
CE4208 Distributed Systems Layered DS Assignment
o Browse through all open job offers (offers that have not yet been assigned to a freelancer and have not yet been completed).
o Search job offers by keyword (list all offers that include the specified keyword) and browse through the search result.
o Search job offer by unique Job ID.
o Offer to undertake an open job description.
Page 1 of 3
CE4208 Distributed Systems Layered DS Assignment
o Revoke an offer to undertake a job (only before the requester has accepted the freelancer).
o Edit their profile - must contain at least name, Freelancer ID (unique, assigned by system), list of skills and a message to job requestors (allow at least 500 characters) .
o View the amount in their “payment” account.
• Administrators can perform:
o Register freelancer to the database.
o Remove freelancer from the database.
o Register job provider to the database.
o Remove job provider from the database.
o Remove any job description from the system (in any state, i.e. “open”, “closed” or “completed” .
• A logging facility:
o Every time a requestor accepts a freelancer or marks a job as completed a corresponding
entry is added to the log (either a log-file or database table).
o Every time a freelancer offers to undertake a job description a corresponding entry is added to the log (either a log-file or database table).
2.2 Technical Requirements
Your solution must implement all features using Jakarta EE (EJB, entity classes, persistence API) and JSF/HTML only. Interaction with the database (queries and updates) must be via the Java Persistence API (JPA). It is ok to use JDBC for creating your tables and filling them with initial content.
Your solution must also have the following properties:
• All information (posted job descriptions, users of the system (provider, freelancer, administrators) and their details) must be kept in a database.
• You must use at least one Session Jakarta Enterprise Bean (either stateless or stateful) that is remotely accessible (in principal – you do not need to use remote access).
• Your web interface must utilize:
o At least one RequestScoped managed bean.
o At least one SessionScoped managed bean. o At least one composite component.
o At least one custom converter.
o At least one custom validator.
o JSF Templates on all pages.
o Include a JSF snippet in different locations on two JSF pages.
• Your application must be resilient to SQL Injection Attacks.
Page 2 of 3
CE4208 Distributed Systems Layered DS Assignment
3. Deadline and Deliverables
Deadline for submission of your solution is 17:00h on Friday, 26th April (Week 12).
Please submit your solution as a single zip, 7-zip or rar archive (please do not use any other format and do not remove the extension from the archive) via the module’s SULIS page (submit your NetBeans project (including all source code) and your Report.
You also need to demonstrate your working solution. This demonstration focuses on the functional and technical requirements. I expect demonstrations to take place in week 12 or 13 – preferably during lab hours (Friday 09:00h-11:00h), but can be arranged at different times, too .
5. Marking
The project is worth 25% of the module
Marks for this assignment are distributed as follows:
Application meets all functional requirements (0.75 per bullet point) 15 Application meets all technical requirements (1 per bullet point) 10
请加QQ:99515681 邮箱:99515681@qq.com WX:codinghelp
标签: