Assignment 1

Due: 2008-11-25, 08:00

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

which outline the interface restrictions for your solution and outline the minimal functionality set that your solution should provide. You will also be provided a simple information system service that enables a simple way to perform service registration and discovery.

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

Some very basic value restrictions are placed on the message fields in the WSDL, service and client implementations are expected to enforce these restrictions on all data in the system.

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/

Due date

2008-11-25, 08:00