Registry Tutorial at ADASS XIII
Using the NVO Registry WebService from Java and C#
Below I briefly describe how to make a simple client for the registry prototype.
The Service URL
First we need the service URL which is
http://sdssdbs1.stsci.edu/nvo/registry/registry.asmx
The Java Client
Next we need some Client code - here is a simple client in Java
import org.us_vo.www.*;
class RegClient {
public static void main (String[] args) throws Exception {
RegistryLocator loc = new RegistryLocator();
RegistrySoap reg = loc.getRegistrySoap();
ArrayOfSimpleResource reses = null;
if ( args.length ==0 ) {
reses = reg.dumpRegistry();
} else {
reses = reg.queryRegistry(args[0]);
}
for (int i = 0 ; i < reses.getSimpleResource().length; i++) {
print(reses.getSimpleResource(i));
}
}
public static void print(SimpleResource res ) {
System.out.println(res.getTitle()+ "|"+ res.getPublisher() + "|" + res.getMaxSR());
}
}
AXIS always creates Localtor classes - where the service url may be changed.
Simple Resource is the object returned by the registry.
Making the java client work
Obviously if we compile this none of the stub classes exist so we need to create them.
If you have AXIS installed and a class path set up as detailed on
WebgridTutorial then this is a simple matter of typing:
java org.apache.axis.wsdl.WSDL2Java "http://sdssdbs1.stsci.edu/nvo/registry/registry.asmx?WSDL"
Note: The \" are really important.
?WSDL is a convention for getting the WSDL frm a service. You will have seen this plenty earlier in the tutorial.
Now the client code should comile so Assuming the above code is in a file called RegClient.java we type :
javac RegClient.java
and we may run it as follows
java RegClient "Subject like '%cosmology%'"
NOAO Science Archive|National Optical Astronomy Observatories|2.0
Hubble Space Telescope|Space Telescope Science Institute/MAST|180.0
Advanced Camera for Surveys|Space Telescope Science Institute/MAST|180.0
Faint Object Camera|Space Telescope Science Institute/MAST|180.0
....
The C# Client using Visual Studio
First we creat a new project - a C# Console Application - called RegClient. This will create a new Class1 lets rename that to RegClient and put the following code in the class :
using System;
using RegClient.edu.stsci.sdssdbs1;
namespace RegClient
{
class RegClient
{
[STAThread]
static void Main(string[] args)
{
Registry reg = new Registry();
SimpleResource[] reses = null;
if ( args.Length ==0 )
{
reses = reg.DumpRegistry();
}
else
{
reses = reg.QueryRegistry(args[0]);
}
for (int i = 0 ; i < reses.Length; i++)
{
print(reses[i]);
}
}
public static void print(SimpleResource res )
{
Console.WriteLine(res.Title+ "|"+ res.Publisher + "|" + res.MaxSR);
}
}
}
This is similar to the Java code.
There are no Locators here but the Service URL may be set on the Registry Class. The Array type handling is also somewhat better.
Making the c# client work
Studil will generate the classes we need to access the service. If we right clik on references in the pproject browser and
choose "Add Web Refference". A window pops up and we may enter the service URL. Hit "Add Refference" and a new namesapce appears for edu.stsci.sdssdsb1.
Now we may simply compile and run the client.
RegClient\bin\Debug>RegClient.exe "Subject like '%Cosmology%'"
NOAO Science Archive|National Optical Astronomy Observatories|2
Hubble Space Telescope|Space Telescope Science Institute/MAST|180
Advanced Camera for Surveys|Space Telescope Science Institute/MAST|180
Faint Object Camera|Space Telescope Science Institute/MAST|180
....
IVOA Client
There is a more suffisticated client with download manager available at
IVOA Client at JHU.
--
WilliamOMullane - 12 Oct 2003