<?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>Reference Library</title>
  </properties>
  <body>

	<section name="Introduction">
	    <p>The jUDDI Project lives or fails based on its human resources. Users
	      and contributors alike help the project with ideas and brainpower. A common
	      foundation of knowledge is required to effectively participate in this
	      virtual community. The following is a list of documents that we have found
	      helpful for us and may be helpful to you.
	    </p>
    </section>

    <section name="UDDI Specifications">        
      <p>
      <strong><a href="http://uddi.xml.org/">UDDI.org</a></strong><br/>
      <strong><a href="http://www.oasis-open.org/committees/uddi-spec/doc/contribs.htm#uddiv1">UDDI Version 1.0 Specification</a></strong><br/>
      <strong><a href="http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv2">UDDI Version 2.0 Specification</a></strong><br/>
      <strong><a href="http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv3">UDDI Version 3.0 Specification</a></strong>
      </p>
    </section>
      
    <section name="UDDI Taxonomies">            

      <p><strong><a href="http://www.census.gov/epcd/www/naics.html">North American Industry Classification System (NAICS)</a></strong><br/>U.S. Census Bureau</p>
      <p><strong><a href="http://www.unspsc.org/Defaults.asp">United Nations Standard Products and Services Code System (UNSPSC) Version 3.1</a></strong><br/>U.S. Census Bureau</p>
    </section>
      
    <section name="Articles, Tutorials and Best Practices">        
    
      <p><strong><a href="http://oreilly.com/catalog/javawebserv/chapter/ch06.html">O'Reilly Java WebServices Chapter 6: "UDDI: Universal Description, Discovery, and Integration"</a></strong><br/>Tyler Jewell and David Chappell</p>    
      <p><strong><a href="http://www-106.ibm.com/developerworks/webservices/library/ws-version/">Best practices for Web services versioning</a></strong><br/>Keep your Web services current with WSDL and UDDI<br/>Kyle Brown and Michael Ellis, IBM developerWorks<br/>January 2004</p>      
      <p><strong><a href="http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm">Using WSDL in a UDDI Registry</a></strong><br/>John Colgrave and Karsten Januszewski, UDDI.org<br/>November 2003</p>            
      <p><strong><a href="http://java.sun.com/developer/technicalArticles/WebServices/jaxrws/">Registration and Discovery of Web Services Using JAXR with XML Registries such as UDDI and ebXML</a></strong><br/>The why and what of the new approach<br/>Qusay H. Mahmoud, Sun Microsystems<br/>June 2002</p>      
      <p><strong><a href="http://www-106.ibm.com/developerworks/webservices/library/ws-udmod1/">A New Approach to UDDI and WSDL Part 1</a></strong><br/>The why and what of the new approach<br/>John Colgrave, IBM developerWorks<br/>August 2003</p>      
      <p><strong><a href="http://www-106.ibm.com/developerworks/webservices/library/ws-udmod2/">A New Approach to UDDI and WSDL Part 2</a></strong><br/>Usage scenarios in publishing and finding WSDL service descriptions<br/>John Colgrave, IBM developerWorks<br/>September 2003</p>            
      <p><strong><a href="http://www.ibm.com/developerworks/webservices/library/ws-wsdl/">Understanding WSDL in a UDDI Registry Part 1</a></strong><br/>How to publish and find WSDL service descriptions<br/>Peter Brittenham, Francisco Cubera, Dave Ehnebuske, Steve Graham, IBM developerWorks<br/>September 2001 (updated September 2002)</p>      
      <p><strong><a href="http://www.ibm.com/developerworks/webservices/library/ws-wsdl2/">Understanding WSDL in a UDDI Registry Part 2</a></strong><br/>How to publish and find WSDL service descriptions<br/>Peter Brittenham, Francisco Cubera, Dave Ehnebuske, Steve Graham, IBM developerWorks<br/>September 2001 (updated September 2002)</p>      
      <p><strong><a href="http://www.ibm.com/developerworks/webservices/library/ws-wsdl3/">Understanding WSDL in a UDDI Registry Part 3</a></strong><br/>How to publish and find WSDL service descriptions<br/>Peter Brittenham, IBM developerWorks<br/>November 2001</p>
      <p><strong><a href="http://www.uddi.org/pubs/TN-taxonomy-provider-V1.00-Final-20010717.pdf">Providing a Taxonomy for Use in UDDI Version 2</a></strong><br/>UDDI.org<br/>July 2001</p>
      <p><strong><a href="http://www.developer.com/services/article.php/1367781">The Role of Taxonomies in UDDI: tModels Demystified</a></strong><br/>Ravi Trivedi, Developer.com</p>
      <p><strong><a href="http://www.developer.com/services/article.php/3374631">Versioning of Web Services: An UDDI Subscription-Based Approach</a></strong><br/>Aravilli Srinivasa Rao, Developer.com</p>
    </section>

    <section name="Related Specifications">        
      <p><strong><a href="http://www.w3.org/TR/SOAP/">SOAP W3C Specification</a></strong></p>
      <p><strong><a href="http://www.w3c.org/TR/wsdl.html">Web Services Description Language (WSDL) 1.1</a></strong></p>
      <p><strong><a href="http://java.sun.com/xml/jaxr/">Java API for XML Registries (JAXR)</a></strong></p>
    </section>
               
    <section name="Other Resources">        
      <p><strong><a href="http://java.sun.com/docs/books/jls/index.html">The Java Language Specification</a></strong><br/>
        Written by the creators of the Java Programming Language, this online
        book is considered by many to be the bible for programming in Java. A must
        read.
      </p>
      <p><strong><a href="http://java.sun.com/products/jdk/javadoc/index.html">Javadoc</a></strong><br/>
        Javadoc is the automatic software documentation generator used by Java
        since it was first released. All code written for this project must be
        documented using Javadoc conventions.
      </p> 
      <p><strong><a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">The Java Code Conventions</a></strong><br/>
        This Sun document specifies the de-facto standard way of formatting
        Java code. All code written for this project must follow these conventions.
      </p>
    </section>

  </body>
</document>
