Mike Taylor > Net-Z3950-UDDI-0.04 > Net::Z3950::UDDI



Annotate this POD

View/Report Bugs
Module Version: 0.04   Source  


Net::Z3950::UDDI - Perl extension for querying UDDI services using Z39.50


  use Net::Z3950::UDDI;
  $handle = new Net::Z3950::UDDI($configFile);
  $handle->launch_server("myAppName", @yazOptions);


This library provides all the guts of the Z39.50-to-UDDI gateway, z2uddi (which is supplied along with it). In the same package comes an underlying library, UDDI::HalfDecent, which supports a subset of UDDI but supports it really well, reliably, and with good error-reporting -- unlike, to pick the module-name out of the thin air, UDDI::Lite for example. Also included in the package are the swarm of auxiliary modules which UDDI::HalfDecent and Net::Z3950::UDDI use, and uddihd, a simple command-line test-harness to exercise the UDDI::HalfDecent library.

The gateway provides a server that understands not only ANSI/NISO Z39.50 (aka. ISO 23950), but also the related web-service protocols SRU (in both its GET and POST forms) and SRW (SRU over SOAP).

The API of the Net::Z3950::UDDI module itself is trivial: the synopsis above captures it in its entirely, and is essentially the whole of the code of the z2uddi script. I'll document it anyway, but the important stuff is elsewhere (see below).



  $handle = new Net::Z3950::UDDI($configFile);

Creates and returns a new Z39.50-to-UDDI gateway object, configured by the file named as $configFile.


  $handle->launch_server($label, @yazOptions);

Launches the gateway $handle, using the $label string in logging output and running in accordance with the specified YAZ options. The implications of this are discussed in the z2uddi documentation.


Documentation Roadmap

Apart from the Net::Z3950::UDDI module itself, there are many other components that go to make up the package that provides the Z39.50-to-UDDI gateway. Each is documented separately, but here is a basic overview.

z2uddi is the gateway program, and consists only of a trival invocation of the Net::Z3950::UDDI library. That in turn uses four worker classes: Net::Z3950::UDDI::Config parses the configuration file, Net::Z3950::UDDI::Session represents a front-end session which may reference several databases and result-sets, Net::Z3950::UDDI::Database represents a connection to a back-end database and Net::Z3950::UDDI::ResultSet represents a set of records that result from a search. The Config documentation also describes the configuration file format.

Both the database and result-set classes are virtual: they are not instantiated directly, but only as subclasses specific to particular back-ends such as UDDI and SOAP, using modules such as Net::Z3950::UDDI::plugins::uddi and Net::Z3950::UDDI::plugins::soap. (These backend-specific modules are not individually documented.)

UDDI access is provided by a stand-alone module UDDI::HalfDecent, which may be useful in other applications. This in turn uses two worker classes, UDDI::HalfDecent::ResultSet and UDDI::HalfDecent::Record. Others may follow as its UDDI capabilities are extended and generalised. The program uddihd provides a simple command-line interface to the UDDI library.


Apart from the modules included in the Net::Z3950::UDDI distribution, the following software is also required.


Mike Taylor <mike@miketaylor.org.uk>

I gratefully acknowledge the funding provided by the United States Geological Survey (USGS) to create this software, and the sterling efforts of Eliot Christian to forge the commercial arrangements.


Copyright (C) 2007 by Mike Taylor.

This library is distributed under the terms of GNU General Public License, version 2. A copy of the license is included in the file "GPL-2" in this distribution.

syntax highlighting: