Adding new servicees for HDF in THREDDS Data Server (TDS)
1. The HDF Group
www.hdfgroup.orgJuly 8, 2014 2014 Summer ESIP Federation Meeting / HDF and HDF-EOS Workshop XVII
Adding new services for HDF in
THREDDS Data Server (TDS)
Hyo-Kyung Joe Lee and Ted Habermann
The HDF Group
1
2. www.hdfgroup.org2014 Summer ESIP Federation Meeting
A User Story
2
I would like to examine a big HDF file X with
command line tool Y that runs on platform
Z.
However, my mobile platform is not Z.
So, I can’t run Y.
X is too big for my device as well.
4. www.hdfgroup.org2014 Summer ESIP Federation Meeting
Web Service Solution
4
Run web server on Z.
The server executes command Y on X.
Send output over the web.
THREDDS Data Server is a good candidate.
5. www.hdfgroup.org2014 Summer ESIP Federation Meeting
Why THREDDS Data Server?
5
Portable – 100% Java
Easy to add a new service
Data and services go together.
Maximum control on services with data
6. www.hdfgroup.org2014 Summer ESIP Federation Meeting
How to add a new service
6
1. Create a YServiceController class (e.g.,
H4MapServiceController.java)
2. handleRequest() method Invokes
runtime.exec(command).
3. Read stdout and build a string outStr.
4. Return ResponseEntity<string>(outStr,…)
5. Set up catalog for Y service for X data.
6. Run the custom TDS on Z.
7. www.hdfgroup.org2014 Summer ESIP Federation Meeting
New HDF Services for non-Java apps
7
• HDF4 File Content Map (h4map)
• For HDF4 files only
• C / Linux & Mac
• HDF5 JSON (h5json)
• For HDF5 files only
• C++
• NCO/CF checker (ncdismember)
• For both HDF4 and HDF5
• C/C++/Python
8. www.hdfgroup.org2014 Summer ESIP Federation Meeting
Quick Demo
8
http://eosdap.hdfgroup.uiuc.edu:8887/thred
ds/catalog.html
Some files are located at FTP server and
mounted via NFS, not at TDS.
Services are triggered based on file extension.
9. www.hdfgroup.org2014 Summer ESIP Federation Meeting
Benefit
9
Try URLs with online XML / JSON browser.
• xmlgrid.net
• jsonviewer.stack.hu
You can develop your own XML/JSON apps on
top of the new HDF web services.
Run command while browsing data – a good
testbed for a new product.
10. www.hdfgroup.org2014 Summer ESIP Federation Meeting
Future Work
10
Supplying command line options?
Generalization of CLI services through Catalog?
What other HDF services do you want to see?
(e.g., GeoJSON)
11. www.hdfgroup.org2014 Summer ESIP Federation Meeting
Acknowledgement
11
This work was supported by Subcontract
number 114820 under Raytheon Contract
number NNG10HP02C, funded by the
National Aeronautics and Space
Administration (NASA). Any opinions,
findings, conclusions, or recommendations
expressed in this material are those of the
authors and do not necessarily reflect the
views of Raytheon or the National
Aeronautics and Space Administration.
Notas do Editor
This is not a new idea.
Remember the old days of Apache cgi-bin.
You can implement it in Node.js or lighty web frame work.
I’d like to call it DataBox. It’s a nice platform that everybody can run and share data easily.
Here’s what I did to add a new service.
If there is a better way to handle this problem in THREDDS, please let me know.
Right now, we hard code the names of command line tools.