java代写 | Java ATOM Assignment 2


Design Sketch

The design sketch is a rough architecture of your system for us to be able to provide feedback on early. You may want to consider use cases of your system and the flow of information through it in the sketch, or simply the components you have thought of and where they sit in the system.


Functional analysis is good

A component view (even if it’s extremely coarse: clients, Atom server, content servers) is required Multi-threaded interactions are a good place to focus some design effort. Show how you ensure that your thread interactions are safe (no races or unsafe mutations) and live (no deadlocks).

Explain how many server replicas you need and why

UML is a good way of expressing software designs, but it is not mandated.

It would be useful to know how you will test each part Diagrams are awesome

Note: Assignments with no design file will receive a mark of zero.


We strongly advise that you submit a draft revision/preview of your completed assignment 2 so that we can provide you with feedback.

You will receive feedback within 1 week. The feedback will be detailed but carries no marks. You are given the opportunity to revise and change your work based on the feedback for the final submission so you use it while you can.

2021/11/25 下午8:12 Assignment 2 2/10

Final revision

If you received feedback in the last submission, please add a PDF (Changes.pdf) in your final version of submission that includes a discussion of the feedback received and what changes you decided to make and why.

Setting Up Version Control

Getting to know Subversion

This course uses Subversion (svn). Svn is a powerful version control system to help maintain a coherent copy of a project that can be worked on from multiple locations. We will also use svn as the handin mechanism throughout this course. Click here ( to learn more.

Creating the assignment directory in your svn repository

Run the following command in terminal.

svn mkdir –parents -m “DS assignment 2” YEAR/s2/ds/assignment2

Replace axxxxxxx with your student ID number.

This command will create an empty directory named YEAR/s2/ds/assignment2 in your svn repository.

You can access your new assignment directory via

Checking out a working version of your assignment

If you are working at home on your personal computer, you can checkout your svn repository running the following command in terminal.

svn checkout ds-21-s2-assignment2

ds-20-s2-assignment2 is an optional argument that specifies the destination path for your repository on your local machine.

Note that you can have more than one copy of your code checked out, you will need to update it to avoid conflicts.

See the svn documentation ( for details on how this can be done. However, for now, we will assume you have just the one working copy.

Working in your repository

2021/11/25 下午8:12 Assignment 2 3/10

As you work on your code you will be adding and committing files to your repository. The Subversion documentation explains and has examples on performing these actions.

It is strongly advised that you:

Commit regularly

Use meaningful commit messages Develop your tests incrementally

Assignment Submission

Use the Computer Science Web Submission System

( system to submit assignments.

You are allowed to commit as many times as you like.

The Web Submission System will only perform basic checks for any required files.

On submission there will be not assigned marks.

The assignment will be marked by a teacher who will upload the marks into the Web Submission System. Keep an eye on the forums for announcements regarding marks.

Assignment Description


To gain an understanding of what is required to build a client/server system, by building a simple system that aggregates and distributes ATOM feeds.


Information management and tracking becomes more difficult as the number of things to track increases. For most users, the number of web pages that they wish to keep track of is quite large and, if they had to remember to check everything manually, it’s easy to forget a webpage or two when you’re tired or busy. Enter syndication, a mechanism by which a website can publish summaries as a feed that you can sign up to, so that you can be notified when something new has happened and then, if it interests you, go and look at it. Initial efforts in the world of syndication included the development of the RSS family of protocols but these are, effectively, not standardised. The ATOM syndication protocol is a standards-based approach to try and provide a solid basis for syndication. You can see the ATOM RFC here ( although you won’t be implementing all of it!

XML-based formats are easy to transport via Hypertext Transport Protocol (HTTP), the workhorse protocol of the Web, and it is increasingly common to work with a standard format for interchange between clients and servers, rather than develop a special protocol for one small group of clients and servers. Where, twenty years ago, we might have used byte-boundary defined patterns in transmitted data to communicate, it is far more common to use XML-based standards and existing HTTP mechanisms to shunt things around. This is socket-based communication between client and server

2021/11/25 下午8:12 Assignment 2 4/10

and does not need to use the Java RMI mechanism to support it – as you would expect as you don’t have to use an RMI client to access a web page! In this prac, you will take data and convert it into ATOM format and then send it to a server. The server will check it and then distribute a limited form of that data to every client who connects and asks for it. When you want to change the data in the server, you overwrite the existing file, which makes the update operation idempotent (you can do it as many times as you like and get the same result). The real test of your system will be that you can accept PUT and GET requests from other students on your server and your clients can talk to them.

As always, don’t share code.

Syndication Servers

Syndication servers are web servers that serve XML documents which conform to the RSS or ATOM standards. On receipt of an HTTP GET, the server will respond with an XML response like this (from “Creating an ATOM feed in PHP” ( ):

<?xml version=’1.0′ encoding=’iso-8859-1′ ?>

<feed xml:lang=”en-US” xmlns=””>

<title>Fishing Reports</title>

<subtitle>The latest reports from</subtitle>

<link href=”” rel=”self”/>






<id>,2008:</id> <entry>

<title>Speckled Trout In Old River</title>

<link type=’text/html’ href=’’/>

<id>,2008:</id >





<summary>Limited out by noon</summary> </entry>


The server, once configured, will serve out this ATOM XML file to any client that requests it over HTTP. Usually, this would be part of a web-client but, in this case, you will be writing the aggregation server, the content servers and the read clients. The content server will PUT content on the server, while the read client will GET content from the server.


The main elements of this assignment are:

An ATOM server (or aggregation server) that responds to requests for feeds and also accepts feed updates from clients. The aggregation server will store feed information persistently, only removing it when the content server who provided it is no longer in contact, or when the feed item is not one of the most recent 20.

2021/11/25 下午8:12 Assignment 2 5/10

A client that makes an HTTP GET request to the server and then displays the feed data, stripped of its XML information.

A CONTENT SERVER that makes an HTTP PUT request to the server and then uploads a new version of the feed to the server, replacing the old one. This feed information is assembled into ATOM XML after being read from a file on the content server’s local filesystem.

All code elements will be written in the Java programming language. Your clients are expected to have a thorough failure handling mechanism where they behave predictably in the face of failure, maintain consistency, are not prone to race conditions and recover reliably and predictably.


本网站支持淘宝 支付宝 微信支付  paypal等等交易。如果不放心可以用淘宝交易!

E-mail:  微信:itcsdx