Assignment 1
The assignment shall be solved individually or in groups of maximum 2 students.
The purpose of this assignment is to introduce the students to Web Services development and Service-Oriented Architecture (SOA) design. In his / her assignment solution, the student shall demonstrate how these techniques can be used to construct scalable, distributed, and interoperable software modules in service environments. The assignment aims to provide students with experience of SOAP Web Service development in preparation for the course project and future programming tasks.
In this assignment, you will construct a (set of) Web Service(s) and
Web Service clients that provide a semi-autonomous and loosely coupled
solution for a distributed chat application.
You are provided the following interface descriptions
- Chat Service WSDL
- Topic Listener Service WSDL
- Message Listener Service WSDL
- Common types used by all services
As can be seen from the WSDL descriptions, the chat application defines two
data types; Topics and Messages.
Topics are akin to email topics, they are used as a string-based identifier
for threads of messages in discussions.
Message is a collection class for message types and contain fields for
- message id (UUID)
- timestamp (non-negative long)
- author (non-empty string)
- topic (non-empty string)
- message text (non-empty string)
The functionality offered by the chat service interface can be outlined as
retrieveTopics(filters) | retrieves a list of all topics in the system that match the supplied substring filter |
---|---|
retrieveMessages(topics) | retrieves all messages associated with supplied topics |
storeMessages(messages) | stores the supplied messages in the system |
registerTopicListeners(subscriptions) unregisterTopicListeners(subscriptions) |
registers (& unregisters) the supplied topic listeners for callbacks when new topics are added to the system |
registerMessageListeners(subscriptions) unregisterMessageListeners(subscriptions) |
registers (& unregisters) the supplied message listeners for callbacks when new messages are added to the specified topics |
The listener services provide a single method that is used for callbacks from the chat service
update(topics / messages) | receives callbacks from registered chat services |
---|
Naturally, you are allowed to freely design the service set you implement, which may range from a single to multiple services. The only restriction on your designs are that you do not break the supplied interface (your solutions will be tested against each other) and that your solutions do not overload other services in the SOA (think and rethink your communication design patterns).
Service Discovery
To enable more flexible and SOA-like solutions, a simplistic directory service has been provided as a means for service registration and discovery. The service is constructed around an flat abstract data type called a service registry entry containing the following fields
id | a unique service registry entry identifier (UUID) |
---|---|
type | a service type identifier, used for categorized service discovery |
url | the service url |
description | a (human-readable) service description (not necessarily the service WSDL) |
The directory service has been built in a fashion very similar to the hello world service example of the SOAP Web Service Tutorial, and provides the following operations via both command-line scripts and a client API
storeEntrys() | publishes a (set of) service entries in the service registry |
---|---|
retrieveEntrys() | retrieves a set of service entries matching the specified category from the service registry |
deleteEntrys() | removes a set of service entries from the service registry |
Allthough use of the supplied directory service is not mandatory, assignment solutions are expected to incorporate some form of service registration or discovery. Tighly coupled solutions will not receive a passing grade on this assignment. For more information about the directory service, see the service implementation &/ contact a teacher.
Summary
You are to implement a small SOA chat application given interface definitions for a small set of services. You are free to choose how to demonstrate the functionality of your solution, but solutions containing autonomous service-based chat interfaces and / or logging storage solutions are preferred.Note that while the provided SOA services make exclusive use of the Axiom interface for Web Service development, you are welcome to generate and use service client stubs for your service(s) should you prefer to do so.
Your assignment solution will be graded on a scale of U (fail), G (pass) (final grade). A passing grade on this assignment is required to pass the course.
Development Environment
See the development environment information and the SOAP Web Service Tutorial for information on SOAP Web Service development.Examination
Place all files pertaining to your solution (including your service .AAR files) in
~/edu/5dv095/assignment1/
Source code should be placed in
~/edu/5dv095/assignment1/src/
You assignment report should be placed in
~/edu/5dv095/assignment1/report/