DALServer V0.1 information (SSAP, DAL)

Doug Tody dtody at nrao.edu
Thu Jan 25 17:04:11 PST 2007


Hi All -

As I promised earlier, here is some summary information on our new
DALServer toolkit, which is the basis for the two developmental SSAP
services announced yesterday.

I apologize for posting about a specific implementation to the DAL
list, but this is potentially relevant for speedily getting the
first SSAP services going and completing the specification, and I
do not know for sure what initial implementations are in progress.
This information is provided so that anyone working on the initial
SSAP implementations can determine whether they wish to look at
this software in more detail.  If anyone is interested in using
or collaborating on the DALServer package, we can follow up on the
details offline.

 	- Doug


DALServer Toolkit V0.1
----------------------


Provides

     o	A reference implementation of the server-side of the DAL
 	services (the initial 0.1 version has full support only
 	for SSAP).

     o	A stand-alone toolkit for implementing DAL services within
 	a Java servlet environment; handles all the protocol details,
 	leaves the information management to the data provider.

     o	A testbed for working out the remaining details of the SSAP
     	protocol, the basis for the 2nd-generation DAL protocols.


Requirements

     o	Java 1.5 or greater.

     o	An XML parser, e.g., Xerces.

     o	A compliant Java applications server, e.g., Apache Tomcat.
 	Version 5.5.17 was used for development but any recent version
 	should work.

     o	The Savot VOTable packages from CDS (a compatible version
 	is included).  Other VOTable implementations could be used
 	but are not supported at this time.

     DALServer is an explicitly Java-based implementation; other
     environments (dotNet, Ruby, etc.), would require a different
     implementation.


What is involved in implementing a new SSAP data service?
---------------------------------------------------------

DALServer includes a fully functional generic SSAP service which can
be deployed to an application server and run without modification,
other than editing some configuration files.  This consists of a
"Servlet" class, which handles all matters relating to the protocol,
and a "Service" class, which knows how to handle the metadata for a
specific data collection.

To build a new data service, essentially what one does is subclass
the "Service" class, replacing the *queryData* operation and usually
the *getData* operation with custom versions which know how to talk
to the local archive and DBMS, and transform project-specific data
and metadata to what is required for SSAP.  Input consists of the
fully processed request parameters, presented as a parameter set.
Output consists of a "request response" object, which implements the
SSAP data models.  The service computes the SSAP-compliant metadata
and writes this to the request response object with a series of simple
"setValue" calls.

All details of returning data to the client, e.g., serializing
the request response as a VOTable, is handled transparently by the
framework.  (Note that the VOTable output is autogenerated and not
pretty-printed as with most hand-generated VOTables).

The request response object can represent either a data query (the
queryData operation), or an actual Spectrum dataset (the getData
operation).  Spectra can be statically precomputed and returned as
files, or dynamically serialized from the request response object
and returned in a variety of formats.


Features
--------

     o	Protocol-specific input parameter handling (e.g., knows the
 	details of the SSAP parameter set, can parse and reorder
 	range-list parameters, deal with ISO 8601 dates, and so forth).

     o	All request parameters defined by the standard protocol are
     	supported.

     o	Support is provided for additional service-defined parameters,
     	and adhoc client-supplied parameters.

     o	Pass-through of local configuration parameters is included
 	as part of the input parameter set.

     o	Support is provided for multiple operations and versioning.
 	The current version supports the queryData, getData,
 	and getCapabilities operations.  Support for a "health"
 	or ping-type operation is planned as well ("stageData" will
 	eventually be added as well).

     o	A true getData operation is provided based on the Pubisher
 	dataset ID, with runtime data format selection (this remains
 	hidden behind an opaque URL in the protocol however).

     o	Concurrent multi-protocol support is provided (that is,
 	HTTP and host callable now, and SOAP or whatever later with
 	no effect on the service implementation).

     o	Multiple servlet instances may execute simultaneously within
     	the same servlet container.

     o	Full error handling is provided for all service operations,
 	including data retrieval.

     o	Keyword factories are provided for the SSAP and Spectrum data
 	models, based on a form of automatic code generation from a
 	common data model (ssap-keywords.xls/csv).  This frees the
 	service code from having to know all the details of the data
 	model (e.g., the correct UCD and UTYPE tags, GROUP membership,
 	VOTable dataType, FITS keyword, etc.), and provides some
 	isolation from changes in data model versions.

     o	Dataset retrieval supports pregenerated static files (a simple
 	mechanism for this is built-in), dynamically created data,
 	including custom data or data generated from the built-in
 	models, or fully streaming data.

     o	Dynamically computed, model-based data can be serialized and
 	output in a variety of data formats.  Currently, CSV, VOTable,
 	and streaming pass-through of native data are supported.
 	Support for FITS binary table format is planned.

     o	Support for data associations in the query response.

     o	A primitive scoring algorithm is provided, and TOP is
     	implemented.

     o	The query response table may be sorted on any key.


Not Yet Implemented
-------------------

     o	Support for DAL protocols other than SSAP.  This is mainly
 	just a matter of subclassing the general framework for each
 	class of data.

     o	Autogeneration of FITS format data.

     o	Although the operation functions, the content of the SSAP
 	getCapabilities operation is not yet finalized.

     o	The health/ping/heartbeat operation still needs to be added (low
     	priority).

     o	Service-level logging would be very useful.


For Further Information
-----------------------

At the moment the best place to go for further information is my development
server at  http://webtest.aoc.nrao.edu/ivoa-dal/dalserver.html



More information about the dal mailing list