In most cases, the DefaultDataReader is used, which delegates most operations to the Java NetCDF libraries and reads data from several file formats and OPeNDAP (Cornillon et al., 2003) services using the Unidata Common Data Model.
For other file formats, custom DataReaders can be written. (2) Metadata are harvested and placed into a memory-resident metadata cache, which is periodically refreshed to keep in synchrony with the data files. Extracted data subsets are cached in a fixed-size region of memory, overflowing to disk (using the ehcache library); see Section 3.2.3. (3) Code in the Presentation Layer converts data and metadata into formats ready for transmission over the network. Images are rendered as PNG, GIF or JPEG and metadata are formatted using XML and JSON. (4) The HTTP Layer parses requests from web clients and marshals the responses. The Spring framework is used to provide modularity and to “wire” all the components of the system together.