<?xml version="1.0" encoding="UTF-8"?>
<!--
 * 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 document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://forrest.apache.org/dtd/document-v12.dtd">
<document>
  <properties>
    <title>jUDDI User's Guide</title>
  </properties>
  <body>

    <anchor id="requirements"/>
    <section name="Requirements">
      <p>jUDDI is a pure Java web application and as such can be deployed to
        any application server or servlet engine that supports version 2.1 or
        later of the servlet API. If you need an application server, we
        recommend <link href="http://jakarta.apache.org/tomcat/">Jakarta
        Tomcat</link>.  Note also that jUDDI requires Java 1.3 or later. As
        with any Java web application, deployment to your application server
        or servlet engine will vary on a product-by-product basis.
      </p>
      <p>Instructions for deploying jUDDI to several application servers have
        been donated and are available in the <link href="http://wiki.apache.org/ws/jUDDI">HOW-TO</link>
        section of the jUDDI wiki.
      </p>
      <p>jUDDI also requires an external datastore in which to persist the 
        registry data it manages.  Typically this is a relational database
        management system such as MySQL, Oracle or DB2. Support for several 
        open source and commercial database products are included. See the 
        section below titled <link href="#datastore">Persistence</link> for 
        more information.
      </p>
    </section>

    <anchor id="config"/>
    <section name="Configuration">
      <p>To properly configure and deploy jUDDI it will be helpful to understand
        a bit about it's architecture. jUDDI consist of a core request processor
        that unmarshalls incoming UDDI requests, invoking the appropriate UDDI
        function and marshalling UDDI responses (marshalling and unmarshalling
        is the process of converting XML data to/from Java objects).
      </p>
      <p>To invoke a UDDI function jUDDI employs the services of three
        configurable sub-components or modules that handle persistence (the
        DataStore), authentication (the Authenticator) and the generation of
        UUID's (the UUIDGen). jUDDI is bundled and pre-configured to use
        default implementations of each of these modules to help your registry
        up and running quickly. These sub-components and a description of 
        the default implementations are described below.
      </p>
      <p>Several public Java interfaces for creating your own DataStore,
        Authenticator and UUIDGen module implementations are available. Please
        see the <link href="#moddev">module development</link> section of this 
        guide for more information regarding jUDDI module development.
      </p>
    </section>

    <anchor id="datastore"/>
    <section name="Persistence (jUDDI DataStore)">
      <p>jUDDI needs a place to store it's registry data so it should come as 
        no surprise that jUDDI is pre-configured to use JDBC and any one of 
        several different DBMSs to do this.
      </p>            
      <p>The process of setting this up is straight forward. Start by creating 
        a new jUDDI database using the instructions for your preferred DBMS 
        which you will find in the 'sql' directory of your jUDDI distribution. 
        At the time of this writing instructions for the following products 
        were available:
      </p>
      <p>
        <ul>
          <li>MySQL</li>
          <li>DB2</li>
          <li>HSQLdb (HypersonicSQL)</li>
          <li>Sybase</li>
          <li>PostreSQL</li>
          <li>Oracle</li>
          <li>TotalXML</li>
          <li>JDataStore (Borland)</li>
        </ul>
      </p>
      <p>If support for your DBMS is not listed you might try posting a message
        to the juddi-user list to see if someone has already developed support
        for it.  You can also try to create the scripts yourself by using the 
        instructions for a supported DBMS as a guide. Please consider 
        contributing your work back to the project so the next person won't 
        have the same issue.
      </p>      
      <p>To complete the DataStore set up you'll need to configure a JNDI
        Datasource with a name of <b>'jdbc/juddiDB'</b> in the application 
        server or servlet engine that you're deploying to. Datasource setup 
        varies on an product-by-product basis so review documentation for 
        your application server. If you're deploying to Jakarta Tomcat,  take a 
        look at Tomcat's <link  href="http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html">JNDI 
        Datasource HOW-TO</link> for assistance.
      </p>
    </section>

    <anchor id="authenticator"/>
    <section name="Authentication (jUDDI Authenticator)">
      <p>Authenticating a jUDDI publisher is a two-step process. The first step
        confirms that the ID/password combination provided by the user in a 
        get_authToken request is valid. The default Authenticator implementation 
        simply approves any authentication attempt. It is expected that a 
        typical jUDDI deployment will use an external authentication 
        mechanism.  It is our hope that additional jUDDI authentication 
        implementations will be developed by jUDDI users as they determine how 
        they would like authentication to take place in their particular 
        environment. See the jUDDI Developers Guide for more information on 
        developing a custom jUDDI authentication module for your environment.
      </p>
      <p>The second step confirms that the publisher has been defined to
        jUDDI. A publisher is said to be defined when a row identifying the
        publisher exists in the PUBLISHER table of the jUDDI datastore. At the
        moment the only way to do this is via SQL. An example of defining a
        new publisher named John Doe would look like this:
      </p>
      <p>
        <b>
        <pre>        
          INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,ADMIN,ENABLED)
          VALUES ('jdoe','John Doe','false','true');
        </pre>
        </b>
      </p>
      <p>The PUBLISHER table consists of several columns but only four of them
        are required and they are defined as follows:
      </p>
      <p>
        <table>
         <tr><th>Column Name</th><th>Description</th></tr>
         <tr><td>PUBLISHER_ID</td><td>The user ID the publisher uses when authenticating. IMPORTANT: This should be the same value used to authenticate with the external authentication service.</td></tr>
         <tr><td>PUBLISHER_NAME</td><td>The publisher's name (or in UDDI speak the Authorized Name).</td></tr>
         <tr><td>ADMIN</td><td>Indicate if the publisher has administrative privileges. Valid values for this column are 'true' or 'false'. The ADMIN value is currently not used.</td></tr>
         <tr><td>ENABLED</td><td>Indicate if the publishers account is enabled and eligible for use.</td></tr>
        </table>
      </p>
      <p>The jUDDI web application will (eventually) be extended to facilitate
        the Publisher creation process. The value of the ADMIN column in the
        PUBLISHER table above will be used to determine who has the privilege
        to create new jUDDI publishers.
      </p>
    </section>

    <anchor id="uuidgen"/>
    <section name="UUID Generation (jUDDI UUIDGen)">
      <p>There's nothing for you to do here but I thought I'd offer a little
        information about how, why and where jUDDI makes use of UUID generation.
      </p>
      <p>The UDDI specification indicates that each Business, Service, Binding
        and TModel (Technical Model) is to be uniquely identified by a
        Universally Unique ID (UUID). Additionally, jUDDI also uses the UUID
        generator to create AuthTokens.
      </p>
      <p>Generation of a UUID typically requires access to hardware level
        information that (unfortunately) is not easily accessible from Java.
        Fortunately, the UUID specification offers an alternative method for
        generating these ID's when this hardware information is not present.
        By default the jUDDI implements this alternative method.
      </p>
    </section>

    <anchor id="logging"/>
    <section name="Logging">
      <p>When deploying jUDDI you may wish to make changes to the
       juddi.properties and log4j.properties files. These files are located in
       the juddi webapp's WEB-INF/classes directory. They're here because
       they need to be in the classpath for jUDDI to locate and load them at
       runtime. One Log4j property value that you'll most likely want to set
       is log4j.appender.LOGFILE.File which specifies the name and location of
       the jUDDI log file.
      </p>
    </section>

    <anchor id="moddev"/>
    <section name="Module Development">
      <p>Coming Soon.
      </p>
    </section>

  </body>
</document>
