%local;
<!ENTITY manref SYSTEM "manref.xml">
<!ENTITY progref SYSTEM "progref.xml">
- <!ENTITY % common SYSTEM "common/common.ent">
- %common;
+ <!ENTITY gpl2 SYSTEM "gpl-2.0.xml">
+ <!ENTITY % idcommon SYSTEM "common/common.ent">
+ %idcommon;
<!-- Next line allows imagedata/@format="PDF" and is taken from
http://lists.oasis-open.org/archives/docbook/200303/msg00163.html
-->
-->
<!NOTATION PDF SYSTEM "PDF">
]>
-<!-- $Id: book.xml,v 1.58 2007-04-19 06:55:50 adam Exp $ -->
-<book id="metaproxy">
+<book>
<bookinfo>
<title>Metaproxy - User's Guide and Reference</title>
<authorgroup>
</authorgroup>
<releaseinfo>&version;</releaseinfo>
<copyright>
- <year>2005-2007</year>
- <holder>Index Data ApS</holder>
+ <year>2005-2010</year>
+ <holder>Index Data</holder>
</copyright>
<abstract>
<simpara>
processes, interprets and redirects requests from IR clients using
standard protocols such as the binary
<ulink url="&url.z39.50;">ANSI/NISO Z39.50</ulink>
- and the information search and retireval
- web services <ulink url="&url.sru;">SRU</ulink>
- and <ulink url="&url.srw;">SRW</ulink>, as
- well as functioning as a limited
+ and the information search and retrieval
+ web service <ulink url="&url.sru;">SRU</ulink>
+ as well as functioning as a limited
<ulink url="&url.http;">HTTP</ulink> server.
</simpara>
<simpara>
using the filter API.
</simpara>
<simpara>
- Metaproxy is <emphasis>not</emphasis> open-source software, but
- may be freely downloaded, unpacked, inspected, built and run for
- evaluation purposes. Deployment requires a separate, commercial,
- license.
+ Metaproxy is covered by the GNU General Public License version 2.
</simpara>
<simpara>
<inlinemediaobject>
<chapter id="introduction">
<title>Introduction</title>
-
<para>
<ulink url="&url.metaproxy;">Metaproxy</ulink>
is a stand alone program that acts as a universal router, proxy and
encapsulated metasearcher for information retrieval protocols such
- as <ulink url="&url.z39.50;">Z39.50</ulink>, and in the future
- <ulink url="&url.sru;">SRU</ulink> and <ulink url="&url.srw;">SRW</ulink>.
+ as <ulink url="&url.z39.50;">Z39.50</ulink> and
+ <ulink url="&url.sru;">SRU</ulink>.
To clients, it acts as a server of these protocols: it can be searched,
records can be retrieved from it, etc.
To servers, it acts as a client: it searches in them,
including examples.
</para>
</chapter>
-
- <chapter id="license">
- <title>The Metaproxy License</title>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
- You are allowed to download this software for evaluation purposes.
- You can unpack it, build it, run it, see how it works and how it fits
- your needs, all at zero cost.
- </para>
- </listitem>
- <listitem>
- <para>
- You may NOT deploy the software. For the purposes of this license,
- deployment means running it for any purpose other than evaluation,
- whether or not you or anyone else makes a profit from doing so. If
- you wish to deploy the software, you must first contact Index Data and
- arrange to purchase a DEPLOYMENT LICENCE. If you are unsure
- whether or not your proposed use of the software constitutes
- deployment, email us at <literal>info@indexdata.com</literal>
- for clarification.
- </para>
- </listitem>
- <listitem>
- <para>
- You may modify your copy of the software (fix bugs, add features)
- if you need to. We encourage you to send your changes back to us for
- integration into the master copy, but you are not obliged to do so. You
- may NOT pass your changes on to any other party.
- </para>
- </listitem>
- <listitem>
- <para>
- There is NO WARRANTY for this software, to the extent permitted by
- applicable law. We provide the software ``as is'' without warranty of
- any kind, either expressed or implied, including, but not limited to, the
- implied warranties of MERCHANTABILITY and FITNESS FOR A
- PARTICULAR PURPOSE. The entire risk as to the quality and
- performance of the software is with you. Should the software prove
- defective, you assume the cost of all necessary servicing, repair or
- correction. In no event unless required by applicable law will we be
- liable to you for damages, arising out of the use of the software,
- including but not limited to loss of data or data being rendered
- inaccurate.
- </para>
- </listitem>
- <listitem>
- <para>
- All rights to the software are reserved by Index Data except where
- this license explicitly says otherwise.
- </para>
- </listitem>
- </orderedlist>
- </chapter>
<chapter id="installation">
<title>Installation</title>
<listitem>
<para>
The popular C++ library. Initial versions of Metaproxy
- was built with 1.33.0. Version 1.33.1 works too.
+ was built with 1.32 but this is no longer supported.
+ Metaproxy is known to work with Boost version 1.33 through 1.38.
</para>
</listitem>
</varlistentry>
tools binary packages. If, for example, Libxml2/libxslt are already
installed as development packages use those (and omit compilation).
</para>
-
- <para>
- Libxml2/libxslt:
- </para>
- <screen>
- gunzip -c libxml2-version.tar.gz|tar xf -
- cd libxml2-version
- ./configure
- make
- su
- make install
- </screen>
- <screen>
- gunzip -c libxslt-version.tar.gz|tar xf -
- cd libxslt-version
- ./configure
- make
- su
- make install
- </screen>
- <para>
- YAZ/YAZ++:
- </para>
- <screen>
- gunzip -c yaz-version.tar.gz|tar xf -
- cd yaz-version
- ./configure
- make
- su
- make install
- </screen>
- <screen>
- gunzip -c yazpp-version.tar.gz|tar xf -
- cd yazpp-version
- ./configure
- make
- su
- make install
- </screen>
- <para>
- Boost:
- </para>
- <screen>
- gunzip -c boost-version.tar.gz|tar xf -
- cd boost-version
- ./configure
- make
- su
- make install
- </screen>
- <para>
- Metaproxy:
- </para>
- <screen>
- gunzip -c metaproxy-version.tar.gz|tar xf -
- cd metaproxy-version
- ./configure
- make
- su
- make install
- </screen>
+
+ <section id="libxml2.fromsource">
+ <title>Libxml2/libxslt</title>
+ <para>
+ Libxml2/libxslt:
+ </para>
+ <screen>
+ gunzip -c libxml2-version.tar.gz|tar xf -
+ cd libxml2-version
+ ./configure
+ make
+ su
+ make install
+ </screen>
+ <screen>
+ gunzip -c libxslt-version.tar.gz|tar xf -
+ cd libxslt-version
+ ./configure
+ make
+ su
+ make install
+ </screen>
+ </section>
+ <section id="yaz.fromsource">
+ <title>YAZ/YAZ++</title>
+ <screen>
+ gunzip -c yaz-version.tar.gz|tar xf -
+ cd yaz-version
+ ./configure
+ make
+ su
+ make install
+ </screen>
+ <screen>
+ gunzip -c yazpp-version.tar.gz|tar xf -
+ cd yazpp-version
+ ./configure
+ make
+ su
+ make install
+ </screen>
+ </section>
+ <section>
+ <title id="boost.fromsource">Boost</title>
+ <para>
+ Metaproxy needs components thread and test from
+ Boost.
+ </para>
+ <screen>
+ gunzip -c boost-version.tar.gz|tar xf -
+ cd boost-version
+ ./configure --with-libraries=thread,test --with-toolset=gcc
+ make
+ su
+ make install
+ </screen>
+ <para>
+ However, under the hood bjam is used. You can invoke that with
+ </para>
+ <screen>
+ ./bjam --toolset=gcc --with-thread --with-test stage
+ </screen>
+ <para>
+ Replace <literal>stage</literal> with <literal>clean</literal> /
+ <literal>install</literal> to perform clean and install respectively.
+ </para>
+ <para>
+ Add <literal>--prefix=DIR</literal> to install Boost in other
+ prefix than <literal>/usr/local</literal>.
+ </para>
+ </section>
+ <section id="metaproxy.fromsource">
+ <title>Metaproxy</title>
+ <screen>
+ gunzip -c metaproxy-version.tar.gz|tar xf -
+ cd metaproxy-version
+ ./configure
+ make
+ su
+ make install
+ </screen>
+ <para>
+ You may have to tell configure where Boost is installed by supplying
+ options <literal>--with-boost</literal> and <literal>--with-boost-toolset</literal>.
+ The former sets the PREFIX for Boost (same as --prefix for Boost above).
+ The latter the compiler toolset (eg. gcc34).
+ </para>
+ <para>
+ Pass <literal>--help</literal> to configure to get a list of
+ available options.
+ </para>
+ </section>
</section>
<section id="installation.debian">
</para>
<para>
There is currently no official Debian package for YAZ++.
- And the Debian package for YAZ is probably too old.
+ And the official Debian package for YAZ is probably too old.
+ But Index Data bulds "new" versions of those for Debian (i386 only).
+ </para>
+ <para>
Update the <filename>/etc/apt/sources.list</filename>
to include the Index Data repository.
See YAZ' <ulink url="&url.yaz.download.debian;">Download Debian</ulink>
</para>
<screen>
apt-get install libxslt1-dev
- apt-get install libyazpp-dev
+ apt-get install libyazpp2-dev
apt-get install libboost-dev
apt-get install libboost-thread-dev
- apt-get install libboost-date-time-dev
- apt-get install libboost-program-options-dev
apt-get install libboost-test-dev
</screen>
<para>
<para>
Metaproxy can be compiled with Microsoft
<ulink url="&url.vstudio;">Visual Studio</ulink>.
- Version 2003 (C 7.1) and 2005 (C 8.0) is known to work.
+ Versions 2003 (C 7.1), 2005 (C 8.0) and 2008 (C 9.0) is known to work.
</para>
<section id="installation.windows.boost">
<title>Boost</title>
<para>
- Get Boost from its <ulink url="&url.boost;">home page</ulink>.
- You also need Boost Jam (an alternative to make).
- That's also available from the Boost home page.
- The files to be downloaded are called something like:
- <filename>boost_1_33-1.exe</filename>
- and
- <filename>boost-jam-3.1.12-1-ntx86.zip</filename>.
- Unpack Boost Jam first. Put <filename>bjam.exe</filename>
- in your system path. Make a command prompt and ensure
- it can be found automatically. If not check the PATH.
- The Boost .exe is a self-extracting exe with
- complete source for Boost. Compile that source with
- Boost Jam (An alternative to Make).
- The compilation takes a while.
- For Visual Studio 2003, use
- <screen>
- bjam "-sTOOLS=vc-7_1"
- </screen>
- Here <literal>vc-7_1</literal> refers to a "Toolset" (compiler system).
- For Visual Studio 2005, use
- <screen>
- bjam "-sTOOLS=vc-8_0"
- </screen>
- To install the libraries in a common place, use
- <screen>
- bjam "-sTOOLS=vc-7_1" install
- </screen>
- (or vc-8_0 for VS 2005).
- </para>
- <para>
- By default, the Boost build process installs the resulting
- libraries + header files in
- <literal>\boost\lib</literal>, <literal>\boost\include</literal>.
+ For Windows, it's easiest to get the precompiled Boost
+ package from <ulink url="&url.boost.windows.download;">here</ulink>.
+ Several versions of the Boost libraries may be selected when
+ installing Boost for windows. Please choose at least the
+ <emphasis>multithreaded</emphasis> (non-DLL) version because
+ the Metaproxy makefile uses that.
</para>
<para>
For more information about installing Boost refer to the
</para>
<para>
Libxslt has other dependencies, but these can all be downloaded
- from the same site. Get the following:
+ from the same site. Get the following package:
iconv, zlib, libxml2, libxslt.
</para>
</section>
<title>YAZ++</title>
<para>
Get <ulink url="&url.yazplusplus;">YAZ++</ulink> as well.
- Version 1.0 or later is required. For now get it from
- Index Data's
- <ulink url="&url.snapshot.download;">Snapshot area</ulink>.
+ Version 1.1.0 or later is required.
</para>
<para>
YAZ++ includes NMAKE makefiles, similar to those found in the
</row>
<row>
<entry>Record cache</entry>
- <entry>Unsupported</entry>
+ <entry>Supported by filter <literal>session_shared</literal></entry>
<entry>Supported for last result set within one Z39.50/HTTP-keep alive session</entry>
</row>
<row>
</row>
<row>
<entry>Retrieval and search limits</entry>
- <entry>Unsupported</entry>
+ <entry>Supported using filter <literal>limit</literal></entry>
<entry>Supported</entry>
</row>
<row>
<entry>Bandwidth limits</entry>
- <entry>Unsupported</entry>
+ <entry>Supported using filter <literal>limit</literal></entry>
<entry>Supported</entry>
</row>
<row>
<entry>Connect limits</entry>
- <entry>Unsupported</entry>
+ <entry>Supported by filter <literal>frontend_net</literal> (connect-max)</entry>
<entry>Supported</entry>
</row>
<row>
<row>
<entry>Query check</entry>
<entry>
- Supported in a limited way using <literal>query_rewrite</literal>
+ Supported by <literal>query_rewrite</literal> which may be check
+ a query and throw diagnostics (errors)
</entry>
<entry>Supported</entry>
</row>
<title>Filters</title>
- <section>
+ <section id="filters-introductory-notes">
<title>Introductory notes</title>
<para>
It's useful to think of Metaproxy as an interpreter providing a small
-->
- <section>
+ <section id="auth_simple">
<title><literal>auth_simple</literal>
(mp::filter::AuthSimple)</title>
<para>
</para>
</section>
- <section>
+ <section id="backend_test">
<title><literal>backend_test</literal>
(mp::filter::Backend_test)</title>
<para>
</para>
</section>
- <section>
+ <section id="bounce">
<title><literal>bounce</literal>
(mp::filter::Bounce)</title>
<para>
</para>
</section>
- <section>
+ <section id="cql_rpn">
<title><literal>cql_rpn</literal>
(mp::filter::CQLtoRPN)</title>
<para>
</para>
</section>
- <section>
+ <section id="frontend_net">
<title><literal>frontend_net</literal>
(mp::filter::FrontendNet)</title>
<para>
</para>
</section>
- <section>
+ <section id="http_file">
<title><literal>http_file</literal>
(mp::filter::HttpFile)</title>
<para>
</para>
</section>
- <section>
+ <section id="load_balance">
<title><literal>load_balance</literal>
(mp::filter::LoadBalance)</title>
<para>
</para>
</section>
- <section>
+ <section id="log">
<title><literal>log</literal>
(mp::filter::Log)</title>
<para>
</para>
</section>
- <section>
+ <section id="multi">
<title><literal>multi</literal>
(mp::filter::Multi)</title>
<para>
</para>
</section>
- <section>
+ <section id="query_rewrite">
<title><literal>query_rewrite</literal>
(mp::filter::QueryRewrite)</title>
<para>
</section>
- <section>
+ <section id="record_transform">
<title><literal>record_transform</literal>
(mp::filter::RecordTransform)</title>
<para>
</para>
</section>
- <section>
+ <section id="session_shared">
<title><literal>session_shared</literal>
(mp::filter::SessionShared)</title>
<para>
</para>
</section>
- <section>
+ <section id="sru_z3950">
<title><literal>sru_z3950</literal>
(mp::filter::SRUtoZ3950)</title>
<para>
</para>
</section>
- <section>
+ <section id="template">
<title><literal>template</literal>
(mp::filter::Template)</title>
<para>
</para>
</section>
- <section>
+ <section id="virt_db">
<title><literal>virt_db</literal>
(mp::filter::VirtualDB)</title>
<para>
</para>
</section>
- <section>
+ <section id="z3950_client">
<title><literal>z3950_client</literal>
(mp::filter::Z3950Client)</title>
<para>
</section>
- <section>
+ <section id="zeerex_explain">
<title><literal>zeerex_explain</literal>
(mp::filter::ZeerexExplain)</title>
<para>
<title>Configuration: the Metaproxy configuration file format</title>
- <section>
+ <section id="configuration-introductory-notes">
<title>Introductory notes</title>
<para>
If Metaproxy is an interpreter providing operations on packages, then
<metaproxy xmlns="http://indexdata.com/metaproxy" version="1.0">
</screen>
<para>
- The top-level element is <metaproxy>. This contains a
- <start> element, a <filters> element and a
- <routes> element, in that order. <filters> is
- optional; the other two are mandatory. All three are
- non-repeatable.
+ The top-level element is <metaproxy>. This contains
+ a <dlpath> element,
+ a <start> element,
+ a <filters> element and
+ a <routes> element, in that order. <dlpath> and
+ <filters> are optional; the other two are mandatory.
+ All four are non-repeatable.
+ </para>
+ <para>
+ The <dlpath;> element contains a text element which
+ specifies the location of filter modules. This is only needed
+ if Metaproxy must load 3rd party filters (most filters with Metaproxy
+ are built into the Metaproxy application).
</para>
<para>
The <start> element is empty, but carries a
</para>
<screen><![CDATA[<?xml version="1.0"?>
<metaproxy xmlns="http://indexdata.com/metaproxy" version="1.0">
+ <dlpath>/usr/lib/metaproxy/modules</dlpath>
<start route="start"/>
<filters>
<filter id="frontend" type="frontend_net">
<title>Virtual databases and multi-database searching</title>
- <section>
+ <section id="multidb-introductory-notes">
<title>Introductory notes</title>
<para>
Two of Metaproxy's filters are concerned with multiple-database
<para>
Metaproxy can act as
<ulink url="&url.sru;">SRU</ulink> and
- <ulink url="&url.srw;">SRW</ulink>
web service server, which translates web service requests to
<ulink url="&url.z39.50;">ANSI/NISO Z39.50</ulink> packages and
sends them off to common available targets.
</tgroup>
</table>
<para>
- A typical minimal example <ulink url="&url.sru;">SRU</ulink> and
- <ulink url="&url.srw;">SRW</ulink> server configuration file is found
- in the tarball distribution at
+ A typical minimal example <ulink url="&url.sru;">SRU</ulink>
+ server configuration file is found in the tarball distribution at
<literal>etc/config-sru-to-z3950.xml</literal>.
</para>
<para>
<title>Classes in the Metaproxy source code</title>
- <section>
+ <section id="classes-introductory-notes">
<title>Introductory notes</title>
<para>
<emphasis>Stop! Do not read this!</emphasis>
parentheses.
</para>
- <section>
+ <section id="class-FactoryFilter">
<title><literal>mp::FactoryFilter</literal>
(<filename>factory_filter.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-FactoryStatic">
<title><literal>mp::FactoryStatic</literal>
(<filename>factory_static.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-filter-Base">
<title><literal>mp::filter::Base</literal>
(<filename>filter.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-AuthSimple">
<title><literal>mp::filter::AuthSimple</literal>,
<literal>Backend_test</literal>, etc.
(<filename>filter_auth_simple.cpp</filename>,
</itemizedlist>
</section>
- <section>
+ <section id="class-Package">
<title><literal>mp::Package</literal>
(<filename>package.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-Pipe">
<title><literal>mp::Pipe</literal>
(<filename>pipe.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-RouterChain">
<title><literal>mp::RouterChain</literal>
(<filename>router_chain.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-RouterFleXML">
<title><literal>mp::RouterFleXML</literal>
(<filename>router_flexml.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-Session">
<title><literal>mp::Session</literal>
(<filename>session.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-ThreadPoolSocketObserver">
<title><literal>mp::ThreadPoolSocketObserver</literal>
(<filename>thread_pool_observer.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-util">
<title><literal>mp::util</literal>
(<filename>util.cpp</filename>)</title>
<para>
</para>
</section>
- <section>
+ <section id="class-xml">
<title><literal>mp::xml</literal>
(<filename>xmlutil.cpp</filename>)</title>
<para>
<reference id="reference">
<title>Reference</title>
- <partintro>
+ <partintro id="reference-introduction">
<para>
The material in this chapter is drawn directly from the individual
manual entries. In particular, the Metaproxy invocation section is
</partintro>
&manref;
</reference>
+
+<appendix id="license">
+ <title>License</title>
+
+ <para>
+ Metaproxy, Copyright © 1995-2009 Index Data ApS.
+ </para>
+
+ <para>
+ Metaproxy is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2, or (at your option) any later
+ version.
+ </para>
+
+ <para>
+ Metaproxy is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+ </para>
+
+ <para>
+ You should have received a copy of the GNU General Public License
+ along with Metaproxy; see the file LICENSE. If not, write to the
+ Free Software Foundation,
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ </para>
+
+ </appendix>
+
+ &gpl2;
</book>
<!-- Keep this comment at the end of the file