Transcript Slide 1

Experiments with Remote
Access to Scientific Data using
HDF5
Kun Yan
Robert E. McGrath
([email protected])
NCSA
May 15, 2002
Today’s Talk
1. Background
2. Experiments with JSP, XML, HDF4,
HDF5, etc.
3. Experiments with CORBA, Java, HDF5
4. Discussion
Acknowledgements
Kun Yan conducted these experiments as a Research Assistant at
NCSA.
This report is based upon work supported in part by a Cooperative
Agreement with NASA under NASA grants NAG 5-2040 and NCC5599. Any opinions, findings, and conclusions or recommendations
expressed in this material are those of the author(s) and do not
necessarily reflect the views of the National Aeronautics and Space
Administration.
Other support provided by NCSA and other sponsors and agencies.
HTML
Web
browser
Java
Java C
Java
Server
Platform
Java
Native
Interface
CORBA
Server
C++
HDF
Library
and File
C
XML
Any
Applet
Java
Native
Interface
C
Java
Java
Other
App.
Other
App.
H5view,
etc
Any
Any
Client/Remote
Distributed Product
Demonstrated in Research
Should work, but not demonstrated
Server/Local
Java
2. Experiments with JSP
• Experiments with JSP, XML, XSL, etc.
– Web access to Data and services.
– Demonstration of browsing HDF5 datasets
• Generate HTML or XML
• Convert data from HDF4 to HDF5 on demand
http://arabica.ncsa.uiuc.edu:7070/hdf5/
Tomcat
• is a standalone web server that supports
the Servlet and JSP specifications.
• developed under the Jakarta project at the
Apache Software Foundation.
• integrated into the J2EE Reference
Implementation.
• Tomcat 4.x (Catalina, Servlet 2.3, JSP 1.2)
• Tomcat 3.3
JavaServer Pages
• JavaServer PagesTM (JSPTM) technology
• rapidly develop and easily maintain,
dynamic web pages
• uses XML-like tags and Java scriptlets
• application logic can reside in serverbased resources
The Flow of a Request
response
request
HTML
Xalan.jar
Xerces.jar
client
JSP
response
XML
beans
beans
beans
Application
XSL
DB
lib
How JSP and Beans Work together
data
3. Experiments with CORBA
• Created a demonstration CORBA server
that reads HDF5
– Written in C++, linked directly to HDF5 library.
• Created a pure-java client
– No CORBA required on the client
– Can be used from an applet within a standard
Web browser
Technology used
• Orbacus 4.1.0 (C++) (free, full source)
• Java 1.3 or above
• HDF5.1.4.3, HDF5 C++ interface
HDF5 CORBA Experiment -- Design Diagram
CORBA Object Hierarchy
HDF5 CORBA Experiment – IDL File
1.
module HDF5{
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct ObjInfo{
long oid;
long fid;
long type;
string name;
long numOfMembers;
};
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
struct DatasetInfo{
string name;
long numOfDim;
Sizes dimSizes;
Sizes dimMaxSizes;
long dataTypeClass;
long dataTypeSize;
long long storageSize;
};
26.
27.
interface H5Obj{
void getObjInfo(out ObjInfo obji);
typedef sequence<long> Sizes;
struct DatatypeInfo{
string name;
long type;
long size;
};
28.
29.
30.
31.
void getNumAttributes(out long attrNum);
void openAttributes (out long attr);
};
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
interface H5DatasetObj:H5Obj{
void getDatasetInfo(out DatasetInfo dsinfo);
long long getStorageSize();
};
53.
54.
55.
56.
interface H5GroupObj:H5Obj{
ObjInfo getGMember(in long fid, in string gName, in long index);
void openGroup(in string gName, out H5GroupObj h5gobj);
void getDatasetInfo(in string dsName, out DatasetInfo dsinfo);
void openDataset(in string dsName, out H5DatasetObj h5ds);
void getDataTypeInfo(in string ttName, out DatatypeInfo dtinfo);
};
interface H5FileObj{
void getTOC(out ObjInfo obji);
void openRootGroup(out H5GroupObj h5gobj);
};
interface H5FileAccess{
void openH5File(in string fileName, out H5FileObj h5fobj);
void numOfGMembers(in long fileId, in string gName, out long
gNum);
string closeH5File(in long fileId);
};
};
HDF5 CORBA Experiment -- Design Diagram
C++ Servant Object Hierarchy
H5FileAccess
H5Obj
H5FileObj
H5DatasetObj
H5GroupObj
H5Obj_impl
ObjInfo
poa_
H5FileAccess_impl
H5FileObj_impl
H5::H5File
poa_
H5::H5File
ObjInfo
poa_
openFile:
closeFile:
getTOC
openRootGroup
setFileName:
getObjInfo
setObjName:
H5GroupObj_impl
H5::H5Group
poa_
openGroup
getGMembers
openDataset:
getDatasetInfo:
getDatatypeInfo:
H5DatasetObj_impl
H5::H5Daraset
DatasetInfo
getDatasetInfo
getStorageSize
HDF5 CORBA Experiment -How to Use the Client Applet
•
•
•
•
•
•
•
•
•
•
Select file name from drop-down list (file resides corba server side)
Select Flags and Access Property of the selected file
Click on “open file” to open the file
Click on “get file TOC” to get the file object info
Click on “open root” to open the root group
Click on “get group TOC” to get the root group object info
Click on “iterate group” to get the group member’s info of the root and each
subgroup
Input dataset name including path, then click on “get dataset” to get the dataset
object
– Click on “get dataset TOC” to get the dataset object info
– Click on “get storage size” to get the storage size of the opened dataset object
Input dataset name including path, then click on “get dataset info” to get object
info of the given dataset
Input datatype name including path, then click on “get datatype info” to get object
info of the given datatype
URLs
• JSP experiments:
http://hdf.ncsa.uiuc.edu/HDF5/XML/JSPExperiments/
•
•
•
•
http://hdf.ncsa.uiuc.edu
http://hdf.ncsa.uiuc.edu/h4toh5/
http://hdf.ncsa.uiuc.edu/HDF5/XML/
http://hdf.ncsa.uiuc.edu/hdf-java-html
4. Discussion
HTML
Web
browser
Java
Java C
Java
Server
Platform
Java
Native
Interface
CORBA
Server
C++
HDF
Library
and File
C
XML
Any
Applet
Java
Native
Interface
C
Java
Java
Other
App.
Other
App.
H5view,
etc
Any
Any
Client/Remote
Distributed Product
Demonstrated in Research
Should work, but not demonstrated
Server/Local
Java
HDF5 CORBA Experiment -- User Interface
HDF5 CORBA Experiment -- Examples of Object Info window
Other HDF Tools
HDF4
HDF5 file
h4toh5
XML
HDF5 file
Viewer/
Editor
XML
ASCII
HDF4
HDF5 file
XML
Generator
Source code
HDF DDL
HDF5 file
Dumper
XML
HDF4 file
h4toh5
HDF5
H4 to H5 LIbrary
HDF5 file
h5toh4
HDF4
GIF file
gif2hdf
HDF5
flat file
fp2hdf
HDF5
Silly XMLTricks
Netcdf to HDF5, via XML using XSL
netcdf
ncxdump
nc.xml
netcdf.dtd
xalan
nctoh5.xsl
hdf5
h5gen
h5.xml
URLs
• JSP experiments:
http://hdf.ncsa.uiuc.edu/HDF5/XML/JSPExperiments/
•
•
•
•
http://hdf.ncsa.uiuc.edu
http://hdf.ncsa.uiuc.edu/h4toh5/
http://hdf.ncsa.uiuc.edu/HDF5/XML/
http://hdf.ncsa.uiuc.edu/hdf-java-html