You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 23 Next »

Purpose

To provide, through a standard web-service interface, a tuple-space-like capability which can be used by other services and by applications running in the ELF container.

We have chosen to implement this service instead of using JavaSpaces, the tuple-space which has long been part of the Jini Technology package (see http://java.sun.com/developer/products/jini and also http://javaspaces.org), for the following reasons:

  1. There are serious problems with using multicast technologies on NCSA's production resource subnets.
  2. We do not require the full generality of JavaSpaces with respect to serializable classes; our service accepts an open-ended (i.e., basically untyped) wrapper object containing a serialized xml blob corresponding to the ncsa.tools.common.types.Configuration object as its payload element.
  3. We do not require the full peer-to-peer capabilities offered by Jini.

API

Service WSDL

IConfigurationSpace

public interface IConfigurationSpace
{
	void write( String entryXML ) throws Throwable;
	String[] read( String matchXML, int max ) throws Throwable;
	String[] take( String matchXML, int max, long timeout ) throws Throwable;
	String[] takeNB( String matchXML, int max ) throws Throwable;
}
NOTES
  • write takes a serialized string representing the ncsa.service.vizier.tspace.ConfigurationEntry object (see below).
  • read and take are batch methods, both requiring a serialized string representing the ncsa.service.vizier.tspace.ConfigurationMatchRequest object (see below), along with an integer indicating the maximum number of tuples to return (default is 10; it is advisable not to set this number too high, as Axis will have trouble managing extremely large SOAP packets); the array returned contains serialized ncsa.service.vizier.tspace.ConfigurationEntry objects.
  • take also requires a timeout (if set to t <= 0, the non-blocking method is called), whereas takeNB will return immediately subsequent to issuing the request against the data store.
    • takeNB can return null if no tuples satisfy the request constraints.
    • take will not return null unless timeout <= 0.
    • take may return an empty array (length 0) if its timeout has been exceeded.

ncsa.service.vizier.tspace.ConfigurationEntry

The object stored in the service's data store and which can be retrieved through the read or take ports. A fuller description of the object is found on the ncsa.tools.ogrscript.tspace page.

NOTE

When passing this object to the write port, it is important that the id attribute/field be handled correctly.

  • If id is null, the object will be added as a new entry.
  • If id is not null, an attempt will be made to update an existing object with that id. The fields subject to update are:
    • timeTaken
    • timeCompleted
    • retried
    • ranOn

See further the ncsa.tools.ogrscript.tspace page.

ncsa.service.vizier.tspace.ConfigurationMatchRequest

The object used to express the match query parameter required by the read or take ports. A fuller description of the object is found on the ncsa.tools.ogrscript.tspace page.

  • No labels