Several months after publishing the SOS 4.x developments, the Sensor Web community is pleased to announce the
52°North SOS 4.1 Release
A downloadable zip archive of the release contains the sources, as well as the binaries. Release requirements, installation and configuration information are documented in the 52°North wiki.
Many thanks to all 52°North SOS contributors for their enhancements and improvements, but also to all users for their feedback!
Core features and improvements
We have implemented the following additional features (NEW) and improvements.
- Binding selection by content type at /sos and /service
- Binding a specific endpoint like /pox and /soap is no longer necessary but still supported. More infomation can be found in the SOS Wiki.
- Microsoft SQL Server support (NEW)
- Requirements and installation instructions are documented in the Wiki.
- GetObservation with multiple temporal filters and different value references (NEW).
- How the filters and value references are used is described in the SOS Wiki.
- Streaming (NEW)
- The SOS provides two types of streaming. For more information, please visit the SOS Wiki.
- XML response streaming
- XML response streaming means that no DOM tree is created, but the data is written directly into the output stream.
- The 52°North SOS implements a hybrid solution which is a combination of streaming and DOM tree creation with XmlBeans. For example, the SOAP envelope or the response document envelope are streaming encoded while the content, e.g. OM_Observation in a GetObservationResponse, is encoded using of XMLBeans (default encoding implementation).
- This allows larger response documents.
- There is less memory usage compared to the DOM tree solution.
- Streaming datasource for GetObservation (Hibernate datasource)
- This is only available for the GetObservation operation.
- Unique static observation metadata (e.g. procedure, observerProperty, FoI) are queried for the resulting observations from the database.
- The variable observation values (e.g. measured value, time stamp) are queried from the database in the encoders.
- There are two datasource streaming solutions:
- Scrollable: Uses Hibernate ScrollableResult
- Chunk: The SOS queries a configurable number of values, processes these values and then queries the next values chunk.
- There is less memory usage.
- In combination with an XML response, the streaming has very low latency.
- A detailed description about the streaming implementations of the 52°North SOS and the performance differences compared to the default implementation will be described in a future blog post.
- Adapted GetDataAvailability to OGC Discussion paper
- The OGC Sensor Observation Service 2.0 Hydrology Profile Discussion paper was published in April 2014 and contains, inter alia, the definition of the GetDataAvailability operation requests and responses.
- The XML schema definition is available here: http://waterml2.org/schemas/gda/1.0/gda.xsd
- Reduced number of Maven profiles
- Before the admin interface existed, Maven profiles were used to build the SOS with the required bindings, encodings, and operations. Due to the possibility to de-/activate the bindings, encodings, and operations via the admin interface, most of the Maven profiles are now obsolete. Now the mvn package command build includes all SOS modules.
- Exception: Two profiles still exist, the oracle and sqlserver profiles, due to license restrictions with the required JDBC driver.
- Improved SQL exception handling
- Instead of throwing only the topmost exception, a composite exception is created which contains all Throwables as a single exception.
- All exceptions now contain sufficient information if a problem arises, e.g. if the observation already exists.
- Changed samplingGeometry handling (SOS 2.0 Spatial Filtering Profile)
- Instead of using a separate table, a geometry column was added to the observation table to store the samplingGeometry.
- If samplingGeometries are contained in the database, GetObservation performance improves because no additional join (spatial filter) is necessary and the samplingGeometries must not be queried separately.
- The SOS still supports the old concept with the separate table, but offers scripts to update the database model.
- Requirement for Java 7 and Java 8 support
- The SOS now requires Java 7. There has been no more public support for Java 6 since April 2013. Using it could lead to security issues.
- The 52°North SOS now also supports Java 8.
- Asynchronous cache serialization
- This change fixes the issue that insert requests were getting slower when more data is available.
For further information about the functionality, improvements and fixed issues, please read the RELEASE-NOTES or visit the SOS GitHub issue page and the 52°North SOS 4.x wiki page.
A short outlook on future work
- Integrate work performed in the INSPIRE SOS context
- Implement support for SensorML 2.0
- Integration of the RESTful API and the Sensor Web JavaScript client
- Integration of sos.js for SOS 1.0.0 operations.
- …
Carl Schroedl says
Thanks for the hard work! We’re especially looking forward to leveraging the streaming functionality.