<?xml version='1.0'?>
<!--
 * Copyright 2001-2009 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */ -->

<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "jUDDI_User_Guide.ent">
%BOOK_ENTITIES;
]>

<!-- chapter: UDDI Registry -->
<chapter id="chap-UDDI_Registry">
    <title>UDDI Registry</title>

    <!-- section: Introduction -->
    <section id="sect-UDDI_Registry-intro">
        <title>Introduction</title>
        <para>
        The Universal Description, Discovery and Integration (UDDI) protocol is one of the
        major building blocks required for successful Web services. UDDI creates a standard
        interoperable platform that enables companies and applications to quickly, easily, and
        dynamically find and use Web services over the Internet. UDDI also allows operational
        registries to be maintained for different purposes in different contexts. UDDI is a
        cross-industry effort driven by major platform and software providers, as well as
        marketplace operators and e-business leaders within the OASIS standards consortium.
        UDDI has gone through 3 revisions and the latest version is 3.0.2. Additional
        information regarding UDDI can be found at <ulink url="http://uddi.xml.org"/>.
        </para>
    </section>

    <!-- section: UDDI Registry -->
    <section id="sect-UDDI_Registry">
        <title>UDDI Registry</title>
        <para>
        The UDDI Registry implements the UDDI specification. UDDI is a Web-based distributed
        directory that enables businesses to list themselves on the Internet and discover each
        other, similar to a traditional phone book's yellow and white pages. The UDDI registry
        is both a white pages business directory and a technical specifications library. The
        Registry is designed to store information about Businesses and Services and it holds
        references to detailed documentation.
        </para>

        <!-- figure: Invocation Pattern using the UDDI Registry -->
        <figure id="fig-UDDI_Registry_Invocation_Pattern">
            <title>Invocation Pattern using the UDDI Registry</title>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/UDDI_Registry_invocation_pattern.png" scalefit="1"/>
                </imageobject>
                <textobject>
                    <phrase>Invocation Pattern using the UDDI Registry</phrase>
                </textobject>
            </mediaobject>
        </figure>

        <para>
        A business publishes services to the UDDI registry. A client looks up the service in
        the registry and receives service binding information. The client then uses the binding
        information to invoke the service. The UDDI APIs are SOAP based for interoperability
        reasons. The UDDI v3 specification defines 9 APIs:
        </para>

        <orderedlist>
            <listitem>
                <para>
                <classname>UDDI_Security_PortType</classname>, defines the API to obtain a
                security token. With a valid security token a publisher can publish to the
                registry. A security token can be used for the entire session.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_Publication_PortType</classname>, defines the API to publish
                business and service information to the UDDI registry.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_Inquiry_PortType</classname>, defines the API to query the
                UDDI registry. Typically this API does not require a security token.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_CustodyTransfer_PortType</classname>, this API can be used to
                transfer the custody of a business from one UDDI node to another.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_Subscription_PortType</classname>, defines the API to
                register for updates on a particular business of service.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_SubscriptionListener_PortType</classname>, defines the API a
                client must implement to receive subscription notifications from a UDDI node.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_Replication_PortType</classname>, defines the API to replicate
                registry data between UDDI nodes.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_ValueSetValidation_PortType</classname>, by nodes to allow
                external providers of value set validation. Web services to assess whether
                keyedReferences or keyedReferenceGroups are valid.
                </para>
            </listitem>
            <listitem>
                <para>
                <classname>UDDI_ValueSetCaching_PortType</classname>, UDDI nodes may perform
                validation of publisher references themselves using the cached values obtained
                from such a Web service.
                </para>
            </listitem>
        </orderedlist>


        <!-- 
        <para>
        Within jUDDI, there are three downloadable files (juddi-core.jar, juddi.war, and
        juddi-tomcat.zip). You should determine which one to use depending on what level of
        integration you want with your application and your platform / server choices.
        </para>
        
        Using the JAR

        The juddi-core module produces a JAR which contains the jUDDI source and a jUDDI
        persistence.xml configuration. jUDDI's persistence is being actively tested with both
        OpenJPA and with Hibernate.

        If you are going to use only the JAR, you would need to directly insert objects into jUDDI
        through the database backend or persistence layer, or configure your own Webservice
        provider with the provided WSDL files and classes.

        Using the WAR files

        As with the JAR, you need to make a decision on what framework you would like to use when
        building the WAR. There will eventually be two WAR files shipped – one using CXF and one
        using Axis 2. For the alpha release, only CXF has been tested thoroughly.

        Simple copy the WAR to the deploy folder of your server (this release has been tested
        under Apache Tomcat 5.5.23), start your server, and follow the directions under “using
        jUDDI as a Web Service”.

        Using the Tomcat Bundle

        The jUDDI Tomcat bundle packages up the jUDDI WAR, Apache Derby, and a few necessary
        configuration files and provides the user with a pre-configured jUDDI instance. By
        default, the Hibernate is used as the persistence layer and CXF is used as a Web Serice
        framework.

        To get started using the Tomcat bundle, unzip the juddi-tomcat-bundle.zip, and start
        Tomcat :

        % cd apache-tomcat-5.5.23/bin % ./startup.sh 
        
        Using jUDDI as Web Service

        Browse to http://localhost:8080/juddi/services

        The services page shows you the available endpoints and methods available. Using any SOAP
        client, you should be able to send some sample requests to jUDDI to test:

        Using jUDDI with your application

        As of the Alpha release, two of the UDDI v3 APIs should be active within jUDDI : inquiry
        and publish.
        -->
    </section>
    
    

    
</chapter>
