Vehicle Tracker
Taken from an example from 'Java Concurrency in Practice' by Brian
Goetz and Tim Peierls
Rough scetch of a vehicle tracker service
- Each tracker vehicle (ship, truck, lorry, bus, but also the trailer) sends a
message with vehicle id, gps coordinates, status, speed
and heading to a central serv(ice|er). The communication is
through e.g. gprs where bit efficiency is important.
An example of a bit-efficient protocol for exactly such a purpose is the NMEA-0183 protocol.
have a peek in e.g. wikipedia.. There are dutch an german versions of this page as well.
-
The status information is one character. But this is
enough to convey 52 (upper and lower case) different
vehicle states.
- Legislation might make such a service mandatory for
trucks and trailers in the near future to prevent or at
least have something about car theft.
-
The central server (maybe one per trucking compagny)
collects all data and provides itself a webservice (like
in Wsdl, which is not an exculsive .NET thing). This
websrvice can be used by e.g. police to track vehicles
that have been reported by the compagny to need special;
attention.
Iteration 1
| 1.1 | Vehicles have name (identifying string), cargo, position, speed
and direction |
| 1.2 | VehicleTracker can retrieve the locations of all vehicles which
are live updated |
| 1.3 | VehicleTracker can get all information of a single vehicle |
| 1.4 | Several VehicleTrackers can be chosen by a client |
Iteration 2 (optional)
| 2.1 | Gui shows terrain where vehicles are about to move |
| 2.2 | Gui can add a vehicle and display it |
| 2.3 | Gui can show properties of selected vehicle |
| 2.4 | Gui can change properties of selected vehicle |
Your task
Make a design with special consideration for concurrency
aspects, especially the concurrency hazards but also address the
scalability problem, both in the user domain as in the technical
(java) domain. The reasoning in the design is the most important
aspect of this task.
Implement the core services
- the acceptance of the
vehicle message and updating the tracking objects
- The webservice in one of two variant xml data format or
JSON data format for easy javascript mashups.