You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by ks...@apache.org on 2010/03/02 16:35:49 UTC

svn commit: r918080 [3/4] - in /webservices/juddi/site/docs/3.0/userguide: html/ html/images/ html_single/ html_single/images/ pdf/

Modified: webservices/juddi/site/docs/3.0/userguide/html_single/index.html
URL: http://svn.apache.org/viewvc/webservices/juddi/site/docs/3.0/userguide/html_single/index.html?rev=918080&r1=918079&r2=918080&view=diff
==============================================================================
--- webservices/juddi/site/docs/3.0/userguide/html_single/index.html (original)
+++ webservices/juddi/site/docs/3.0/userguide/html_single/index.html Tue Mar  2 15:35:48 2010
@@ -3,11 +3,11 @@
   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"><head><title xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory">jUDDI User Guide</title><link rel="stylesheet" href="css/jbossorg.css" type="text/css"/><meta xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" name="generator" content="DocBook XSL Stylesheets V1.74.0"/><meta xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" name="description" content="This document is a User Guide for jUDDI. jUDDI (pronounced &#34;Judy&#34;) is an open source Java implementation of the Universal Description, Discovery, and Integration (UDDI v3) specification for Web Services."/></head><body><div class="book" lang="en-US"><div class="titlepage"><div><p id="title"><a href="http://ws.apache.org/juddi" class="site_href"><strong>Apache jUDDI</strong></a><a href="http://ws.apache.org/juddi/docs" class="doc_href"><strong>Community Documentation</strong></a></p><div><h1 class="title"><a id="d0e1"/>jUDDI User Guide</h1></div><div><h2 class=
 "subtitle">A guide to using jUDDI</h2></div><div><h3 class="corpauthor">
 		<span class="inlinemediaobject"><object type="image/svg+xml" data="Common_Content/images/title_logo.svg"/></span>
-	</h3></div><div><div xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="authorgroup"><div class="authors">by <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">Tom</span> <span xmlns="http://www.w3.org/1999/xhtml" class="orgname"/> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Cunningham</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">Kurt</span> <span xmlns="http://www.w3.org/1999/xhtml" class="orgname"/> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Stam</span>, and <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">The jUDDI Community</span> <span xmlns="http://www.w3.org/1999/xhtml" class="orgname"/> <span xmlns="http://www.w3.org/1999/xhtml" class="surname"/></div><div class="editors"/><div class="others">and thanks to <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">Darrin</span> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Mison</span></div></div></div><
 div><p class="copyright">Copyright © 2009 jUDDI Community.</p></div><div><a href="ln-d0e32.html">Legal Notice</a></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>
+	</h3></div><div><div xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="authorgroup"><div class="authors">by <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">Tom</span> <span xmlns="http://www.w3.org/1999/xhtml" class="orgname"/> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Cunningham</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">Kurt</span> <span xmlns="http://www.w3.org/1999/xhtml" class="orgname"/> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Stam</span>, <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">Jeff</span> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Faath</span>, and <span xmlns="http://www.w3.org/1999/xhtml" class="firstname">The jUDDI Community</span> <span xmlns="http://www.w3.org/1999/xhtml" class="orgname"/> <span xmlns="http://www.w3.org/1999/xhtml" class="surname"/></div><div class="editors"/><div class="others">and thanks to <span xmlns="http:/
 /www.w3.org/1999/xhtml" class="firstname">Darrin</span> <span xmlns="http://www.w3.org/1999/xhtml" class="surname">Mison</span></div></div></div><div><p class="copyright">Copyright © 2009 jUDDI Community.</p></div><div><a href="ln-d0e32.html">Legal Notice</a></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>
         This document is a User Guide for jUDDI. jUDDI (pronounced "Judy") is an open
         source Java implementation of the Universal Description, Discovery, and
         Integration (UDDI v3) specification for Web Services.
-		</p></div></div></div><hr/></div><div class="toc"><dl><dt><span class="preface"><a href="#User_Guide-Preface">Preface</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e76">1. Document Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e86">1.1. Typographic Conventions</a></span></dt><dt><span class="section"><a href="#d0e302">1.2. Pull-quote Conventions</a></span></dt><dt><span class="section"><a href="#d0e321">1.3. Notes and Warnings</a></span></dt></dl></dd><dt><span class="section"><a href="#d0e341">2. We Need Feedback!</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-UDDI_Registry">1. UDDI Registry</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-UDDI_Registry-intro">1.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-UDDI_Registry">1.2. UDDI Registry</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Getting_Started">2. Getting Started</a></span></dt><dd><dl><dt><spa
 n class="section"><a href="#sect-what_should_I_download">2.1. What Should I Download?</a></span></dt><dt><span class="section"><a href="#sect-using_the_jar">2.2. Using the JAR</a></span></dt><dt><span class="section"><a href="#sect-using_the_WAR_file">2.3. Using the WAR File</a></span></dt><dt><span class="section"><a href="#sect-using_the_tomcat_bundle">2.4. Using the Tomcat Bundle</a></span></dt><dt><span class="section"><a href="#sect-Using_jUDDI_webservices">2.5. Using jUDDI Web Services</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Authentication">3. Authentication</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-authentication_intro">3.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-jUDDI_Authentication">3.2. jUDDI Authentication</a></span></dt><dt><span class="section"><a href="#sect-XMLDocAuthentication">3.3. XMLDocAuthentication</a></span></dt><dt><span class="section"><a href="#sect-CryptedXMLDocAuthenticat
 ion">3.4. CryptedXMLDocAuthentication</a></span></dt><dt><span class="section"><a href="#sect-JBoss_Authentication">3.5. JBoss Authentication</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-database_setup">4. Database Setup</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-derby_OOB">4.1. Derby Out-of-the-Box</a></span></dt><dt><span class="section"><a href="#sect-switch_to_mysql">4.2. Switch to MySQL</a></span></dt><dt><span class="section"><a href="#sect-switch_to_postres">4.3. Switch to Postgres</a></span></dt><dt><span class="section"><a href="#sect-switch_to_other_DB">4.4. Switch to &lt;other db&gt;</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-root_seed_data">5. Root Seed Data</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-root_seed_data_intro">5.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-seed_data_files">5.2. Seed Data Files</a></span></dt><dt><span class="section"><a hre
 f="#sect-tokens_in_the_seed_data">5.3. Tokens in the Seed Data</a></span></dt><dt><span class="section"><a href="#sect-custom_seed_data">5.4. Customer Seed Data</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-jUDDI_Configuration">6. jUDDI_Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-config_Introduction">6.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-config_authentication">6.2. Authentication</a></span></dt><dt><span class="section"><a href="#sect-startup">6.3. Startup</a></span></dt><dt><span class="section"><a href="#sect-config_queries">6.4. Queries</a></span></dt><dt><span class="section"><a href="#sect-config_proxy">6.5. Proxy Settings</a></span></dt><dt><span class="section"><a href="#sect-config_keygeneration">6.6. KeyGeneration</a></span></dt><dt><span class="section"><a href="#sect-config_subscription">6.7. Subscription</a></span></dt><dt><span class="section"><a href="#sect-config_transfer
 ">6.8. Transfer</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Using_jUDDI-Client">7. Using the jUDDI-Client</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-jUDDI_Client_intro">7.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-configuration">7.2. Configuration</a></span></dt><dt><span class="section"><a href="#sect-JAX-SW_transport">7.3. JAX-WS Transport</a></span></dt><dt><span class="section"><a href="#sect-RMI_transport">7.4. RMI Transport</a></span></dt><dt><span class="section"><a href="#sect-InVM_transport">7.5. InVM Transport</a></span></dt><dt><span class="section"><a href="#sect-dependencies">7.6. Dependencies</a></span></dt><dt><span class="section"><a href="#sect-sample_code">7.7. Sample Code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-UDDI_annotations">8. UDDI Annotations</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-intro_annotations">8.1. Introduction</a></span></
 dt><dt><span class="section"><a href="#sect-UDDIService">8.2. UDDIService Annotation</a></span></dt><dt><span class="section"><a href="#sect-UDDIServiceBinding">8.3. UDDIServiceBinding Annotation</a></span></dt><dt><span class="section"><a href="#sect-WebServiceExample">8.4. WebService Example</a></span></dt><dt><span class="section"><a href="#sect-CategoryBag">8.5. CategoryBag Attribute</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Subscription">9. Subscription</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-subscription_intro">9.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-Two_node_example">9.2. Two node example setup: Sales and Marketing</a></span></dt><dt><span class="section"><a href="#sect-deploy_HelloSales_service">9.3. Deploy the HelloSales Service</a></span></dt><dt><span class="section"><a href="#sect-config_user_create_subscription">9.4. Configure a user to create Subscriptions</a></span></dt><dt><span
  class="section"><a href="#sect-synchronous_notifications">9.5. Synchronous Notifications</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Administration">10. Administration</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-admin_intro">10.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-changing_listener_port">10.2. Changing the Listener Port</a></span></dt><dt><span class="section"><a href="#sect-changing_oracle_sequence_name">10.3. Changing the Oracle Sequence name</a></span></dt></dl></dd><dt><span class="appendix"><a href="#appe-Publican-Revision_History">A. Revision History</a></span></dt></dl></div><div class="preface" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="User_Guide-Preface"/>Preface</h2></div></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e76"/>1. Document Conventions</h2></div></div></div><p>
+		</p></div></div></div><hr/></div><div class="toc"><dl><dt><span class="preface"><a href="#User_Guide-Preface">Preface</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e83">1. Document Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e93">1.1. Typographic Conventions</a></span></dt><dt><span class="section"><a href="#d0e309">1.2. Pull-quote Conventions</a></span></dt><dt><span class="section"><a href="#d0e328">1.3. Notes and Warnings</a></span></dt></dl></dd><dt><span class="section"><a href="#d0e348">2. We Need Feedback!</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-UDDI_Registry">1. UDDI Registry</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-UDDI_Registry-intro">1.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-UDDI_Registry">1.2. UDDI Registry</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Getting_Started">2. Getting Started</a></span></dt><dd><dl><dt><spa
 n class="section"><a href="#sect-what_should_I_download">2.1. What Should I Download?</a></span></dt><dt><span class="section"><a href="#sect-using_the_jar">2.2. Using the JAR</a></span></dt><dt><span class="section"><a href="#sect-using_the_WAR_file">2.3. Using the WAR File</a></span></dt><dt><span class="section"><a href="#sect-using_the_tomcat_bundle">2.4. Using the Tomcat Bundle</a></span></dt><dt><span class="section"><a href="#sect-Using_jUDDI_webservices">2.5. Using jUDDI Web Services</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Authentication">3. Authentication</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-authentication_intro">3.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-jUDDI_Authentication">3.2. jUDDI Authentication</a></span></dt><dt><span class="section"><a href="#sect-XMLDocAuthentication">3.3. XMLDocAuthentication</a></span></dt><dt><span class="section"><a href="#sect-CryptedXMLDocAuthenticat
 ion">3.4. CryptedXMLDocAuthentication</a></span></dt><dt><span class="section"><a href="#sect-JBoss_Authentication">3.5. JBoss Authentication</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-database_setup">4. Database Setup</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-derby_OOB">4.1. Derby Out-of-the-Box</a></span></dt><dt><span class="section"><a href="#sect-switch_to_mysql">4.2. Switch to MySQL</a></span></dt><dt><span class="section"><a href="#sect-switch_to_postres">4.3. Switch to Postgres</a></span></dt><dt><span class="section"><a href="#sect-switch_to_other_DB">4.4. Switch to &lt;other db&gt;</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-root_seed_data">5. Root Seed Data</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-root_seed_data_intro">5.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-seed_data_files">5.2. Seed Data Files</a></span></dt><dt><span class="section"><a hre
 f="#sect-tokens_in_the_seed_data">5.3. Tokens in the Seed Data</a></span></dt><dt><span class="section"><a href="#sect-custom_seed_data">5.4. Customer Seed Data</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-jUDDI_Configuration">6. jUDDI_Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-config_Introduction">6.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-config_authentication">6.2. Authentication</a></span></dt><dt><span class="section"><a href="#sect-startup">6.3. Startup</a></span></dt><dt><span class="section"><a href="#sect-config_queries">6.4. Queries</a></span></dt><dt><span class="section"><a href="#sect-config_proxy">6.5. Proxy Settings</a></span></dt><dt><span class="section"><a href="#sect-config_keygeneration">6.6. KeyGeneration</a></span></dt><dt><span class="section"><a href="#sect-config_subscription">6.7. Subscription</a></span></dt><dt><span class="section"><a href="#sect-config_transfer
 ">6.8. Transfer</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Using_jUDDI-Client">7. Using the jUDDI-Client</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-jUDDI_Client_intro">7.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-configuration">7.2. Configuration</a></span></dt><dt><span class="section"><a href="#sect-JAX-SW_transport">7.3. JAX-WS Transport</a></span></dt><dt><span class="section"><a href="#sect-RMI_transport">7.4. RMI Transport</a></span></dt><dt><span class="section"><a href="#sect-InVM_transport">7.5. InVM Transport</a></span></dt><dt><span class="section"><a href="#sect-dependencies">7.6. Dependencies</a></span></dt><dt><span class="section"><a href="#sect-sample_code">7.7. Sample Code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-UDDI_annotations">8. UDDI Annotations</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-intro_annotations">8.1. Introduction</a></span></
 dt><dt><span class="section"><a href="#sect-UDDIService">8.2. UDDIService Annotation</a></span></dt><dt><span class="section"><a href="#sect-UDDIServiceBinding">8.3. UDDIServiceBinding Annotation</a></span></dt><dt><span class="section"><a href="#sect-WebServiceExample">8.4. WebService Example</a></span></dt><dt><span class="section"><a href="#sect-CategoryBag">8.5. CategoryBag Attribute</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-SimplePublish">9. Simple Publishing Using the jUDDI API</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e1535">9.1. UDDI Data Model</a></span></dt><dt><span class="section"><a href="#d0e1561">9.2. jUDDI Additions to the Model</a></span></dt><dt><span class="section"><a href="#d0e1574">9.3. UDDI and jUDDI API</a></span></dt><dt><span class="section"><a href="#d0e1612">9.4. Getting Started</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e1620">9.4.1. Simple Publishing Example</a></span></dt></dl></dd><d
 t><span class="section"><a href="#d0e1662">9.5. Conclusion</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Subscription">10. Subscription</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-subscription_intro">10.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-Two_node_example">10.2. Two node example setup: Sales and Marketing</a></span></dt><dt><span class="section"><a href="#sect-deploy_HelloSales_service">10.3. Deploy the HelloSales Service</a></span></dt><dt><span class="section"><a href="#sect-config_user_create_subscription">10.4. Configure a user to create Subscriptions</a></span></dt><dt><span class="section"><a href="#sect-synchronous_notifications">10.5. Synchronous Notifications</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-Administration">11. Administration</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-admin_intro">11.1. Introduction</a></span></dt><dt><span class="section
 "><a href="#sect-changing_listener_port">11.2. Changing the Listener Port</a></span></dt><dt><span class="section"><a href="#sect-changing_oracle_sequence_name">11.3. Changing the Oracle Sequence name</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-deployjboss">12. Deploying to JBoss 5.1.0.GA</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-deployjboss">12.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-juddi-war">12.2. Add juddiv3.war</a></span></dt><dt><span class="section"><a href="#sect-datasource">12.3. Configure Datasource</a></span></dt></dl></dd><dt><span class="chapter"><a href="#chap-deployglassfish">13. Deploying to Glassfish 2.1.1</a></span></dt><dd><dl><dt><span class="section"><a href="#sect-deployglassfish">13.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-glassfish-jars">13.2. Glassfish jars</a></span></dt><dt><span class="section"><a href="#sect-juddi-ds">13.3. Configure the JU
 DDI datasource</a></span></dt><dt><span class="section"><a href="#sect-glassfish-juddi-war">13.4. Add juddiv3-cxf.war</a></span></dt><dt><span class="section"><a href="#sect-run">13.5. Run juddi</a></span></dt></dl></dd><dt><span class="appendix"><a href="#appe-Publican-Revision_History">A. Revision History</a></span></dt></dl></div><div class="preface" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="User_Guide-Preface"/>Preface</h2></div></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e83"/>1. Document Conventions</h2></div></div></div><p>
 	This manual uses several conventions to highlight certain words and phrases and draw
     attention to specific pieces of information.
     </p><p>
@@ -16,7 +16,7 @@
 	The Liberation Fonts set is also used in HTML editions if the set is installed on your
     system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat
     Enterprise Linux 5 and later includes the Liberation Fonts set by default.
-	</p><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e86"/>1.1. Typographic Conventions</h3></div></div></div><p>
+	</p><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e93"/>1.1. Typographic Conventions</h3></div></div></div><p>
 		Four typographic conventions are used to call attention to specific words and
         phrases. These conventions, and the circumstances they apply to, are as follows.
 		</p><p>
@@ -103,7 +103,7 @@
 			Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
 		</p><div class="blockquote"><blockquote class="blockquote"><p>
 				When the Apache HTTP Server accepts requests, it dispatches child processes or threads to handle them. This group of child processes or threads is known as a <em class="firstterm">server-pool</em>. Under Apache HTTP Server 2.0, the responsibility for creating and maintaining these server-pools has been abstracted to a group of modules called <em class="firstterm">Multi-Processing Modules</em> (<em class="firstterm">MPMs</em>). Unlike other modules, only one module from the MPM group can be loaded by the Apache HTTP Server.
-			</p></blockquote></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e302"/>1.2. Pull-quote Conventions</h3></div></div></div><p>
+			</p></blockquote></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e309"/>1.2. Pull-quote Conventions</h3></div></div></div><p>
 			Two, commonly multi-line, data types are set off visually from the surrounding text.
 		</p><p>
 			Output sent to a terminal is set in <code class="computeroutput">Mono-spaced Roman</code> and presented thus:
@@ -133,7 +133,7 @@
 <!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;</span><span class="java_separator">}</span>
 <!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;</span>
 <!--  --><br/><span class="java_separator">}</span>
-</pre></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e321"/>1.3. Notes and Warnings</h3></div></div></div><p>
+</pre></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e328"/>1.3. Notes and Warnings</h3></div></div></div><p>
 			Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
 		</p><div xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="note"><h2>Note</h2><p>
 				A Note is a tip or shortcut or alternative approach to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier.
@@ -141,7 +141,7 @@
 				Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring Important boxes won't cause data loss but may cause irritation and frustration.
 			</p></div><div xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="warning"><h2>Warning</h2><p>
 				A Warning should not be ignored. Ignoring warnings will most likely cause data loss.
-			</p></div></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e341"/>2. We Need Feedback!</h2></div></div></div><p>
+			</p></div></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e348"/>2. We Need Feedback!</h2></div></div></div><p>
 	If you find a typographical error in this manual, or if you have thought of a way
     to make this manual better, we would love to hear from you! 
 	</p><p>
@@ -1017,11 +1017,11 @@
         </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-UDDIService"/>8.2. UDDIService Annotation</h2></div></div></div><p>
         The UDDIService annotation is used to register a service under an already existing business in the Registry. The
         annotation should be added at the class level of the java class.
-        </p><div class="table"><a id="d0e1364"/><p class="title"><b>Table 8.1. UDDIService attributes</b></p><div class="table-contents"><table summary="UDDIService attributes" border="1"><colgroup><col/><col/><col/></colgroup><thead><tr><th>attribute</th><th>description</th><th>required</th></tr></thead><tbody><tr><td>serviceName</td><td>The name of the service, by default the clerk will use the one name specified in the WebService annotation</td><td>no</td></tr><tr><td>description</td><td>Human readable description of the service</td><td>yes</td></tr><tr><td>serviceKey</td><td>UDDI v3 Key of the Service</td><td>yes</td></tr><tr><td>businessKey</td><td>UDDI v3 Key of the Business that should own this Service. The business should exist in the registry at time of registration</td><td>yes</td></tr><tr><td>lang</td><td>Language locale which will be used for the name and description, defaults to "en" if omitted</td><td>no</td></tr><tr><td>categoryBag</td><td>Definition of 
 a CategoryBag, see below for details</td><td>no</td></tr></tbody></table></div></div><p><br class="table-break"/>
+        </p><div class="table"><a id="d0e1371"/><p class="title"><b>Table 8.1. UDDIService attributes</b></p><div class="table-contents"><table summary="UDDIService attributes" border="1"><colgroup><col/><col/><col/></colgroup><thead><tr><th>attribute</th><th>description</th><th>required</th></tr></thead><tbody><tr><td>serviceName</td><td>The name of the service, by default the clerk will use the one name specified in the WebService annotation</td><td>no</td></tr><tr><td>description</td><td>Human readable description of the service</td><td>yes</td></tr><tr><td>serviceKey</td><td>UDDI v3 Key of the Service</td><td>yes</td></tr><tr><td>businessKey</td><td>UDDI v3 Key of the Business that should own this Service. The business should exist in the registry at time of registration</td><td>yes</td></tr><tr><td>lang</td><td>Language locale which will be used for the name and description, defaults to "en" if omitted</td><td>no</td></tr><tr><td>categoryBag</td><td>Definition of 
 a CategoryBag, see below for details</td><td>no</td></tr></tbody></table></div></div><p><br class="table-break"/>
         </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-UDDIServiceBinding"/>8.3. UDDIServiceBinding Annotation</h2></div></div></div><p>
             The UDDIServiceBinding annotation is used to register a BindingTemplate to the UDDI registry. This annotation
             cannot be used by itself. It needs to go along side a UDDIService annotation.
-        	</p><div class="table"><a id="d0e1429"/><p class="title"><b>Table 8.2. UDDIServiceBinding attributes</b></p><div class="table-contents"><table summary="UDDIServiceBinding attributes" border="1"><colgroup><col/><col/><col/></colgroup><thead><tr><th>attribute</th><th>description</th><th>required</th></tr></thead><tbody><tr><td>bindingKey</td><td>UDDI v3 Key of the ServiceBinding</td><td>yes</td></tr><tr><td>description</td><td>Human readable description of the service</td><td>yes</td></tr><tr><td>accessPointType</td><td>UDDI v3 AccessPointType, defaults to wsdlDeployment if omitted</td><td>no</td></tr><tr><td>accessPoint</td><td>Endpoint reference</td><td>yes</td></tr><tr><td>lang</td><td>Language locale which will be used for the name and description, defaults to "en" if omitted</td><td>no</td></tr><tr><td>tModelKeys</td><td>Comma-separated list of tModelKeys key references</td><td>no</td></tr><tr><td>categoryBag</td><td>Definition of a CategoryBag, see below f
 or further details</td><td>no</td></tr></tbody></table></div></div><p><br class="table-break"/>
+        	</p><div class="table"><a id="d0e1436"/><p class="title"><b>Table 8.2. UDDIServiceBinding attributes</b></p><div class="table-contents"><table summary="UDDIServiceBinding attributes" border="1"><colgroup><col/><col/><col/></colgroup><thead><tr><th>attribute</th><th>description</th><th>required</th></tr></thead><tbody><tr><td>bindingKey</td><td>UDDI v3 Key of the ServiceBinding</td><td>yes</td></tr><tr><td>description</td><td>Human readable description of the service</td><td>yes</td></tr><tr><td>accessPointType</td><td>UDDI v3 AccessPointType, defaults to wsdlDeployment if omitted</td><td>no</td></tr><tr><td>accessPoint</td><td>Endpoint reference</td><td>yes</td></tr><tr><td>lang</td><td>Language locale which will be used for the name and description, defaults to "en" if omitted</td><td>no</td></tr><tr><td>tModelKeys</td><td>Comma-separated list of tModelKeys key references</td><td>no</td></tr><tr><td>categoryBag</td><td>Definition of a CategoryBag, see below f
 or further details</td><td>no</td></tr></tbody></table></div></div><p><br class="table-break"/>
         </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-WebServiceExample"/>8.4. WebService Example</h2></div></div></div><p>
         The annotations can be used on any class that defines a service. Here they are added to a WebService, a POJO with a 
         JAX-WS 'WebService' annotation.
@@ -1080,7 +1080,200 @@
                      "keyedReference=keyName=uddi-org:types:wsdl2;keyValue=wsdlDeployment2;" +
                      "tModelKey=uddi:uddi.org:categorization:types2",
         </pre><p>
-        </p></div></div><div class="chapter" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="chap-Subscription"/>Chapter 9. Subscription</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#sect-subscription_intro">9.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-Two_node_example">9.2. Two node example setup: Sales and Marketing</a></span></dt><dt><span class="section"><a href="#sect-deploy_HelloSales_service">9.3. Deploy the HelloSales Service</a></span></dt><dt><span class="section"><a href="#sect-config_user_create_subscription">9.4. Configure a user to create Subscriptions</a></span></dt><dt><span class="section"><a href="#sect-synchronous_notifications">9.5. Synchronous Notifications</a></span></dt></dl></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-subscription_intro"/>9.1. Introduction</h2></div></div></div><p>
+        </p></div></div><div class="chapter" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="chap-SimplePublish"/>Chapter 9. Simple Publishing Using the jUDDI API</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#d0e1535">9.1. UDDI Data Model</a></span></dt><dt><span class="section"><a href="#d0e1561">9.2. jUDDI Additions to the Model</a></span></dt><dt><span class="section"><a href="#d0e1574">9.3. UDDI and jUDDI API</a></span></dt><dt><span class="section"><a href="#d0e1612">9.4. Getting Started</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e1620">9.4.1. Simple Publishing Example</a></span></dt></dl></dd><dt><span class="section"><a href="#d0e1662">9.5. Conclusion</a></span></dt></dl></div><p>
+    One of the most common requests we get on the message board is “How do I publish a service using jUDDI?” This question holds a wide berth, as it can result anywhere from not understanding the UDDI data model, to confusion around how jUDDI is set up, to the
+    order of steps required to publish artifacts in the registry, to general use of the API – and everything in between. This article will attempt to answer this “loaded” question and, while not going into too much detail, will hopefully clear some of the
+    confusion about publishing into the jUDDI registry.
+  </p><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e1535"/>9.1. UDDI Data Model</h2></div></div></div><p>
+      Before you begin publishing artifacts, you need to know exactly how to break down your data into the UDDI model. This topic is covered extensively in the specification, particularly in section 3, so I only want to gloss over some for details. Readers
+      interested in more extensive coverage should most definitely take a look at the UDDI specification.
+    </p><p>
+      Below is a great diagram of the UDDI data model (taken directly from the specification):
+    </p><div class="figure"><a id="fig-UDDI-coredatastructures"/><div class="figure-contents"><div class="mediaobject"><img src="images/uddi_core_datastructures.gif" alt="UDDI core data structures"/></div></div><p class="title"><b>Figure 9.1. UDDI Core Data Structures</b></p></div><br class="figure-break"/><p>
+      As you can see, data is organized into a hierarchical pattern. Business Entities are at the top of the pyramid, they contain Business Services and those services in turn contain Binding Templates. TModels (or technical models) are a catch-all structure
+      that can do anything from categorize one of the main entities, describe the technical details of a binding (ex. protocols, transports, etc), to registering a key partition. TModels won’t be covered too much in this article as I want to focus on the
+      three main UDDI entities.
+    </p><p>
+      The hierarchy defined in the diagram is self-explanatory. You must first have a Business Entity before you can publish any services. And you must have a Business Service before you can publish a Binding Template. There is no getting around this structure;
+      this is the way UDDI works.
+    </p><p>
+      Business Entities describe the organizational unit responsible for the services it publishes. It generally consist of a description and contact information. How one chooses to use the Business Entity is really dependent on the particular case. If you’re one
+      small company, you will likely just have one Business Entity. If you are a larger company with multiple departments, you may want to have a Business Entity per department. (The question may arise if you can have one uber-Business Entity and multiple
+      child Business Entities representing the departments. The answer is yes, you can relate Business Entities using Publisher Assertions, but that is beyond the scope of this article.)
+    </p><p>
+      Business Services are the cogs of the SOA landscape. They represent units of functionality that are consumed by clients. In UDDI, there’s not much to a service structure; mainly descriptive information like name, description and categories. The meat of the
+      technical details about the service is contained in its child Binding Templates.
+    </p><p>
+      Binding Templates, as mentioned above, give the details about the technical specification of the service. This can be as simple as just providing the service’s access point, to providing the location of the service WSDL to more complicated scenarios to
+      breaking down the technical details of the WSDL (when used in concert with tModels). Once again, getting into these scenarios is beyond the scope of this article but may be the subject of future articles.
+    </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e1561"/>9.2. jUDDI Additions to the Model</h2></div></div></div><p>
+      Out of the box, jUDDI provides some additional structure to the data model described in the specification. Primarily, this is the concept of the Publisher.
+    </p><p>
+      The UDDI specification talks about ownership of the entities that are published within the registry, but makes no mention about how ownership should be handled. Basically, it is left up to the particular implementation to decide how to handle “users” that
+      have publishing rights in the registry.
+    </p><p>
+      Enter the jUDDI Publisher. The Publisher is essentially an out-of-the-box implementation of an identity management system. Per the specification, before assets can be published into the registry, a “publisher” must authenticate with the registry by
+      retrieving an authorization token. This authorization token is then attached to future publish calls to assign ownership to the published entities.
+    </p><p>
+      jUDDI’s Publisher concept is really quite simple, particularly when using the default authentication. You can save a Publisher to the registry using jUDDI’s custom API and then use that Publisher to publish your assets into the registry. jUDDI allows for
+      integration into your own identity management system, circumventing the Publisher entirely if desired. This is discussed in more detail in the documentation, but for purposes of this article, we will be using the simple out-of-the-box Publisher
+      solution.
+    </p><p>
+      One quick note: ownership is essentially assigned to a given registry entity by using its “authorizedName” field. The “authorizedName” field is defined in the specification in the operationalInfo structure which keeps track of operational info for each
+      entity.
+    </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e1574"/>9.3. UDDI and jUDDI API</h2></div></div></div><p>
+      Knowing the UDDI data model is all well and good. But to truly interact with the registry, you need to know how the UDDI API is structured and how jUDDI implements this API. The UDDI API is covered in great detail in chapter 5 of the specification but will be
+      summarized here.
+    </p><p>
+      UDDI divides their API into several “sets” – each representing a specific area of functionality. The API sets are listed below:
+    </p><div class="itemizedlist"><ul><li><p>
+          Inquiry – deals with querying the registry to return details on entities within
+        </p></li><li><p>
+          Publication – handles publishing entities into the registry
+        </p></li><li><p>
+          Security – open-ended specification that handles authentication
+        </p></li><li><p>
+          Custody and Ownership Transfer – deals with transferring ownership and custody of entities
+        </p></li><li><p>
+          Subscription – allows clients to retrieve information on entities in a timely manner using a subscription format
+        </p></li><li><p>
+          Subscription Listener – client API that accepts subscription results
+        </p></li><li><p>
+          Value Set (Validation and Caching)– validates keyed reference values (not implemented by jUDDI)
+        </p></li><li><p>
+          Replication – deals with federation of data between registry nodes (not implemented by jUDDI)
+        </p></li></ul></div><p>
+      The most commonly used APIs are the Inquiry, Publication and Security APIs. These APIs provide the standard functions for interacting with the registry.
+    </p><p>
+      The jUDDI server implements each of these API sets as a JAX-WS compliant web service and each method defined in the API set is simply a method in the corresponding web service. The client module provided by jUDDI uses a “transport” class that defines how
+      the call is to be made. The default transport uses JAX-WS but there are several alternative ways to make calls to the API. Please refer to the documentation for more information.
+    </p><p>
+      One final note, jUDDI defines its own API set. This API set contains methods that deal with handling Publishers as well as other useful maintenance functions (mostly related to jUDDI’s subscription model). This API set is obviously proprietary to jUDDI and
+      therefore doesn’t conform to the UDDI specification.
+    </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e1612"/>9.4. Getting Started</h2></div></div></div><p>
+      Now that we’ve covered the basics of the data model and API sets, it’s time to get started with the publishing sample. The first thing that must happen is to get the jUDDI server up and running. Please refer to this
+      <a class="ulink" href="http://apachejuddi.blogspot.com/2010/02/getting-started-with-juddi-v3.html">article</a>
+      that explains how to start the jUDDI server.
+    </p><div class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="d0e1620"/>9.4.1. Simple Publishing Example</h3></div></div></div><p>
+        We will now go over the “simple-publish” example found in the documentation. This sample expands upon the HelloWorld example in that after retrieving an authentication token, a Publisher, BusinessEntity and BusinessService are published to the registry.
+      </p><p>
+        The sample consists of only one class: SimplePublish. Let’s start by taking a look at the constructor:
+      </p><pre xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="JAVA"></span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_keyword">public</span><span class="java_plain">&nbsp;</span><span class="java_type">SimplePublish</span><span class="java_separator">()</span><span class="java_plain">&nbsp;</span><span class="java_separator">{</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_keyword">try</span><span class="java_plain">&nbsp;</span><span class="java_separator">{</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">String</span><span class="java_plain">&nbsp;clazz&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_type">UDDIClientContainer</span><span class="java_separator">.</span><span class="java_plain">getUDDIClerkManager</span><span class="java_separator">(</span><span class="java_literal">null</span><span class="java_separator">).</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getClientConfig</span><span class="java_separator">().</span><span class="java_plain">getUDDINode</span><span class="java_separator">(</span><span class="java_literal">&quot;default&quot;</span><span class="java_separator">).</span><span class="java_plain">getProxyTransport</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">Class</span><span class="java_operator">&lt;?&gt;</span><span class="java_plain">&nbsp;transportClass&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_type">ClassUtil</span><span class="java_separator">.</span><span class="java_plain">forName</span><span class="java_separator">(</span><span class="java_plain">clazz</span><span class="java_separator">,</span><span class="java_plain">&nbsp;</span><span class="java_type">Transport</span><span class="java_separator">.</span><span class="java_keyword">class</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_keyword">if</span><span class="java_plain">&nbsp;</span><span class="java_separator">(</span><span class="java_plain">transportClass</span><span class="java_operator">!=</span><span class="java_literal">null</span><span class="java_separator">)</span><span class="java_plain">&nbsp;</span><span class="java_separator">{</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">Transport</span><span class="java_plain">&nbsp;transport&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_separator">(</span><span class="java_type">Transport</span><span class="java_separator">)</span><span class="java_plain">&nbsp;transportClass</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getConstructor</span><span class="java_separator">(</span><span class="java_type">String</span><span class="java_separator">.</span><span class="java_keyword">class</span><span class="java_separator">).</span><span class="java_plain">newInstance</span><span class="java_separator">(</span><span class="java_literal">&quot;default&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;security&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;transport</span><span class="java_separator">.</span><span class="java_plain">getUDDISecurityService</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;juddiApi&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;transport</span><span class="java_separator">.</span><span class="java_plain">getJUDDIApiService</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publish&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;transport</span><span class="java_separator">.</span><span class="java_plain">getUDDIPublishService</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_separator">}</span><span class="java_plain">&nbsp;&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_separator">}</span><span class="java_plain">&nbsp;</span><span class="java_keyword">catch</span><span class="java_plain">&nbsp;</span><span class="java_separator">(</span><span class="java_type">Exception</span><span class="java_plain">&nbsp;e</span><span class="java_separator">)</span><span class="java_plain">&nbsp;</span><span class="java_separator">{</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e</span><span class="java_separator">.</span><span class="java_plain">printStackTrace</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_separator">}</span><span class="java_plain">&nbsp;&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_separator">}</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></pre><p>
+        The constructor uses the jUDDI client API to retrieve the transport from the default node.  You can refer to the documentation if you’re confused about how clerks and nodes work.  Suffice it to say, we are simply retrieving the default client transport class which 
+        is designed to make UDDI calls out using JAX-WS web services.
+      </p><p>
+        Once the transport is instantiated, we grab the three API sets we need for this demo:  1) the Security API set so we can get authorization tokens, 2) the proprietary jUDDI API set so we can save a Publisher and 3) the Publication API set so we can actually publish 
+        entities to the registry.
+      </p><p>
+        All the magic happens in the publish method.  We will look at that next.
+      </p><p>
+        Here are the first few lines of the publish method:
+      </p><pre xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="JAVA"></span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Setting</span><span class="java_plain">&nbsp;up&nbsp;the&nbsp;values&nbsp;to&nbsp;get&nbsp;an&nbsp;authentication&nbsp;token&nbsp;</span><span class="java_keyword">for</span><span class="java_plain">&nbsp;the&nbsp;</span><span class="java_literal">'root'</span><span class="java_plain">&nbsp;user&nbsp;</span><span class="java_separator">(</span><span class="java_literal">'root'</span><span class="java_plain">&nbsp;user&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;has&nbsp;admin&nbsp;privileges&nbsp;and&nbsp;can&nbsp;save&nbsp;other&nbsp;publishers</span><span class="java_separator">).</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">GetAuthToken</span><span class="java_plain">&nbsp;getAuthTokenRoot&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">GetAuthToken</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAuthTokenRoot</span><span class="java_separator">.</span><span class="java_plain">setUserID</span><span class="java_separator">(</span><span class="java_literal">&quot;root&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAuthTokenRoot</span><span class="java_separator">.</span><span class="java_plain">setCred</span><span class="java_separator">(</span><span class="java_literal">&quot;&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Making</span><span class="java_plain">&nbsp;API&nbsp;call&nbsp;that&nbsp;retrieves&nbsp;the&nbsp;authentication&nbsp;token&nbsp;</span><span class="java_keyword">for</span><span class="java_plain">&nbsp;the&nbsp;</span><span class="java_literal">'root'</span><span class="java_plain">&nbsp;user</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">AuthToken</span><span class="java_plain">&nbsp;rootAuthToken&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;security</span><span class="java_separator">.</span><span class="java_plain">getAuthToken</span><span class="java_separator">(</span><span class="java_plain">getAuthTokenRoot</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">System</span><span class="java_separator">.</span><span class="java_plain">out</span><span class="java_separator">.</span><span class="java_plain">println&nbsp;</span><span class="java_separator">(</span><span class="java_literal">&quot;root&nbsp;AUTHTOKEN&nbsp;=&nbsp;&quot;</span><span class="java_plain">&nbsp;</span><span class="java_operator">+</span><span class="java_plain">&nbsp;rootAuthToken</span><span class="java_separator">.</span><span class="java_plain">getAuthInfo</span><span class="java_separator">());</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></pre><p>
+        This code simply gets the authorization token for the ‘root’ user.   The ‘root’ user (or publisher) is automatically installed in every jUDDI instance and acts as the “administrator” for jUDDI API calls.  Additionally, the ‘root’ user is the owning 
+        publisher for all the initial services installed with jUDDI.  You may be wondering what those “initial services” are.  Well, since the UDDI API sets are all implemented as web services by jUDDI, every jUDDI node actually registers those services inside 
+        itself.  This is done per the specification.
+      </p><p>
+        Let’s get back to the code.  Now that we have root authorization, we can add a publisher:
+      </p><pre xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="JAVA"></span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Creating</span><span class="java_plain">&nbsp;a&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;publisher&nbsp;that&nbsp;we&nbsp;will&nbsp;use&nbsp;to&nbsp;publish&nbsp;our&nbsp;entities&nbsp;to</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">Publisher</span><span class="java_plain">&nbsp;p&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">Publisher</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span class="java_separator">.</span><span class="java_plain">setAuthorizedName</span><span class="java_separator">(</span><span class="java_literal">&quot;my-publisher&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span class="java_separator">.</span><span class="java_plain">setPublisherName</span><span class="java_separator">(</span><span class="java_literal">&quot;My&nbsp;Publisher&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Adding</span><span class="java_plain">&nbsp;the&nbsp;publisher&nbsp;to&nbsp;the&nbsp;</span><span class="java_literal">&quot;save&quot;</span><span class="java_plain">&nbsp;structure</span><span class="java_separator">,</span><span class="java_plain">&nbsp;using&nbsp;the&nbsp;</span><span class="java_literal">'root'</span><span class="java_plain">&nbsp;user&nbsp;authentication&nbsp;info&nbsp;and&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;saving&nbsp;away</span><span class="java_separator">.</span><span class="java_plain">&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">SavePublisher</span><span class="java_plain">&nbsp;sp&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">SavePublisher</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp</span><span class="java_separator">.</span><span class="java_plain">getPublisher</span><span class="java_separator">().</span><span class="java_plain">add</span><span class="java_separator">(</span><span class="java_plain">p</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp</span><span class="java_separator">.</span><span class="java_plain">setAuthInfo</span><span class="java_separator">(</span><span class="java_plain">rootAuthToken</span><span class="java_separator">.</span><span class="java_plain">getAuthInfo</span><span class="java_separator">());</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;juddiApi</span><span class="java_separator">.</span><span class="java_plain">savePublisher</span><span class="java_separator">(</span><span class="java_plain">sp</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></pre><p>
+        Here we’ve simply used the jUDDI API to save a publisher with authorized name “my-publisher”.  Notice how the authorization token for the ‘root’ user is used.  Next, we need to get the authorization token for this new publisher:
+      </p><pre xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="JAVA"></span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Our</span><span class="java_plain">&nbsp;publisher&nbsp;is&nbsp;now&nbsp;saved</span><span class="java_separator">,</span><span class="java_plain">&nbsp;so&nbsp;now&nbsp;we&nbsp;want&nbsp;to&nbsp;retrieve&nbsp;its&nbsp;authentication&nbsp;token</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">GetAuthToken</span><span class="java_plain">&nbsp;getAuthTokenMyPub&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">GetAuthToken</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAuthTokenMyPub</span><span class="java_separator">.</span><span class="java_plain">setUserID</span><span class="java_separator">(</span><span class="java_literal">&quot;my-publisher&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAuthTokenMyPub</span><span class="java_separator">.</span><span class="java_plain">setCred</span><span class="java_separator">(</span><span class="java_literal">&quot;&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">AuthToken</span><span class="java_plain">&nbsp;myPubAuthToken&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;security</span><span class="java_separator">.</span><span class="java_plain">getAuthToken</span><span class="java_separator">(</span><span class="java_plain">getAuthTokenMyPub</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">System</span><span class="java_separator">.</span><span class="java_plain">out</span><span class="java_separator">.</span><span class="java_plain">println&nbsp;</span><span class="java_separator">(</span><span class="java_literal">&quot;myPub&nbsp;AUTHTOKEN&nbsp;=&nbsp;&quot;</span><span class="java_plain">&nbsp;</span><span class="java_operator">+</span><span class="java_plain">&nbsp;myPubAuthToken</span><span class="java_separator">.</span><span class="java_plain">getAuthInfo</span><span class="java_separator">());</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></pre><p>
+        This is pretty straightforward.  You’ll note that no credentials have been set on both authorization calls.  This is because we’re using the default authenticator which doesn’t require credentials.  We have our authorization token for our new 
+        publisher, now we can simply publish away:
+      </p><pre xmlns="" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="JAVA"></span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Creating</span><span class="java_plain">&nbsp;the&nbsp;parent&nbsp;business&nbsp;entity&nbsp;that&nbsp;will&nbsp;contain&nbsp;our&nbsp;service</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">BusinessEntity</span><span class="java_plain">&nbsp;myBusEntity&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">BusinessEntity</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">Name</span><span class="java_plain">&nbsp;myBusName&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">Name</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myBusName</span><span class="java_separator">.</span><span class="java_plain">setValue</span><span class="java_separator">(</span><span class="java_literal">&quot;My&nbsp;Business&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myBusEntity</span><span class="java_separator">.</span><span class="java_plain">getName</span><span class="java_separator">().</span><span class="java_plain">add</span><span class="java_separator">(</span><span class="java_plain">myBusName</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Adding</span><span class="java_plain">&nbsp;the&nbsp;business&nbsp;entity&nbsp;to&nbsp;the&nbsp;</span><span class="java_literal">&quot;save&quot;</span><span class="java_plain">&nbsp;structure</span><span class="java_separator">,</span><span class="java_plain">&nbsp;using&nbsp;our&nbsp;publisher's&nbsp;authentication&nbsp;info&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;and&nbsp;saving&nbsp;away</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">SaveBusiness</span><span class="java_plain">&nbsp;sb&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">SaveBusiness</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb</span><span class="java_separator">.</span><span class="java_plain">getBusinessEntity</span><span class="java_separator">().</span><span class="java_plain">add</span><span class="java_separator">(</span><span class="java_plain">myBusEntity</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb</span><span class="java_separator">.</span><span class="java_plain">setAuthInfo</span><span class="java_separator">(</span><span class="java_plain">myPubAuthToken</span><span class="java_separator">.</span><span class="java_plain">getAuthInfo</span><span class="java_separator">());</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">BusinessDetail</span><span class="java_plain">&nbsp;bd&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;publish</span><span class="java_separator">.</span><span class="java_plain">saveBusiness</span><span class="java_separator">(</span><span class="java_plain">sb</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">String</span><span class="java_plain">&nbsp;myBusKey&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;bd</span><span class="java_separator">.</span><span class="java_plain">getBusinessEntity</span><span class="java_separator">().</span><span class="java_plain">get</span><span class="java_separator">(</span><span class="java_literal">0</span><span class="java_separator">).</span><span class="java_plain">getBusinessKey</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">System</span><span class="java_separator">.</span><span class="java_plain">out</span><span class="java_separator">.</span><span class="java_plain">println</span><span class="java_separator">(</span><span class="java_literal">&quot;myBusiness&nbsp;key:&nbsp;&nbsp;&quot;</span><span class="java_plain">&nbsp;</span><span class="java_operator">+</span><span class="java_plain">&nbsp;myBusKey</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Creating</span><span class="java_plain">&nbsp;a&nbsp;service&nbsp;to&nbsp;save</span><span class="java_separator">.</span><span class="java_plain">&nbsp;&nbsp;</span><span class="java_type">Only</span><span class="java_plain">&nbsp;adding&nbsp;the&nbsp;minimum&nbsp;data</span><span class="java_operator">:</span><span class="java_plain">&nbsp;the&nbsp;parent&nbsp;business&nbsp;key&nbsp;retrieved&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">from&nbsp;saving&nbsp;the&nbsp;business&nbsp;above&nbsp;and&nbsp;a&nbsp;single&nbsp;name</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">BusinessService</span><span class="java_plain">&nbsp;myService&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">BusinessService</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myService</span><span class="java_separator">.</span><span class="java_plain">setBusinessKey</span><span class="java_separator">(</span><span class="java_plain">myBusKey</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">Name</span><span class="java_plain">&nbsp;myServName&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">Name</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myServName</span><span class="java_separator">.</span><span class="java_plain">setValue</span><span class="java_separator">(</span><span class="java_literal">&quot;My&nbsp;Service&quot;</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myService</span><span class="java_separator">.</span><span class="java_plain">getName</span><span class="java_separator">().</span><span class="java_plain">add</span><span class="java_separator">(</span><span class="java_plain">myServName</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Add</span><span class="java_plain">&nbsp;binding&nbsp;templates</span><span class="java_separator">,</span><span class="java_plain">&nbsp;etc</span><span class="java_separator">...</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;</span><span class="java_type">Adding</span><span class="java_plain">&nbsp;the&nbsp;service&nbsp;to&nbsp;the&nbsp;</span><span class="java_literal">&quot;save&quot;</span><span class="java_plain">&nbsp;structure</span><span class="java_separator">,</span><span class="java_plain">&nbsp;using&nbsp;our&nbsp;publisher's&nbsp;authentication&nbsp;info&nbsp;and&nbsp;</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_operator">//</span><span class="java_plain">&nbsp;saving&nbsp;away</span><span class="java_separator">.</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">SaveService</span><span class="java_plain">&nbsp;ss&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;</span><span class="java_keyword">new</span><span class="java_plain">&nbsp;</span><span class="java_type">SaveService</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss</span><span class="java_separator">.</span><span class="java_plain">getBusinessService</span><span class="java_separator">().</span><span class="java_plain">add</span><span class="java_separator">(</span><span class="java_plain">myService</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss</span><span class="java_separator">.</span><span class="java_plain">setAuthInfo</span><span class="java_separator">(</span><span class="java_plain">myPubAuthToken</span><span class="java_separator">.</span><span class="java_plain">getAuthInfo</span><span class="java_separator">());</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">ServiceDetail</span><span class="java_plain">&nbsp;sd&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;publish</span><span class="java_separator">.</span><span class="java_plain">saveService</span><span class="java_separator">(</span><span class="java_plain">ss</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">String</span><span class="java_plain">&nbsp;myServKey&nbsp;</span><span class="java_operator">=</span><span class="java_plain">&nbsp;sd</span><span class="java_separator">.</span><span class="java_plain">getBusinessService</span><span class="java_separator">().</span><span class="java_plain">get</span><span class="java_separator">(</span><span class="java_literal">0</span><span class="java_separator">).</span><span class="java_plain">getServiceKey</span><span class="java_separator">();</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="java_type">System</span><span class="java_separator">.</span><span class="java_plain">out</span><span class="java_separator">.</span><span class="java_plain">println</span><span class="java_separator">(</span><span class="java_literal">&quot;myService&nbsp;key:&nbsp;&nbsp;&quot;</span><span class="java_plain">&nbsp;</span><span class="java_operator">+</span><span class="java_plain">&nbsp;myServKey</span><span class="java_separator">);</span>
+<!--  --><br/><span class="java_plain">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></pre><p>
+        To summarize, here we have created and saved a BusinessEntity and then created and saved a BusinessService.  We’ve just added the bare minimum data to each entity (and in fact, have not added any BindingTemplates to the service).  Obviously, you 
+        would want to fill out each structure with greater information, particularly with services.  However, this is beyond the scope of this article, which aims to simply show you how to programmatically publish entities.
+      </p><p>
+        There are a couple important notes regarding the use of entity keys.  Version 3 of the specification allows for publishers to create their own keys but also instructs implementers to have a default method.  Here we have gone with the default 
+        implementation by leaving each entity’s “key” field blank in the save call.  jUDDI’s default key generator simply takes the node’s partition and appends a GUID.  In a default installation, it will look something like this:
+      </p><div class="blockquote"><blockquote class="blockquote"><p>
+          uddi:juddi.apache.org:&lt;GUID&gt;
+        </p></blockquote></div><p>
+        You can, of course, customize all of this, but that is left for another article.  The second important point is that when the BusinessService is saved, I’ve had to explicitly set its parent business key (retrieved from previous call saving the 
+        business).  This is a necessary step when the service is saved in an independent call like this.  Otherwise you would get an error because jUDDI won’t know where to find the parent entity.  I could have added this service to the BusinessEntity’s service 
+        collection and saved it with the call to saveBusiness.  In that scenario I would not have to set the parent business key.
+      </p></div></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="d0e1662"/>9.5. Conclusion</h2></div></div></div><p>
+      That does it for this article.  Hopefully I managed to clear some of the confusion around the open-ended question, “How do I publish a service using jUDDI?”.
+    </p></div></div><div class="chapter" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="chap-Subscription"/>Chapter 10. Subscription</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#sect-subscription_intro">10.1. Introduction</a></span></dt><dt><span class="section"><a href="#sect-Two_node_example">10.2. Two node example setup: Sales and Marketing</a></span></dt><dt><span class="section"><a href="#sect-deploy_HelloSales_service">10.3. Deploy the HelloSales Service</a></span></dt><dt><span class="section"><a href="#sect-config_user_create_subscription">10.4. Configure a user to create Subscriptions</a></span></dt><dt><span class="section"><a href="#sect-synchronous_notifications">10.5. Synchronous Notifications</a></span></dt></dl></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-subscription_intro"/>10.1. Introduction</h2></div></div></div><p>
         Subscriptions come to play in a multi-registry setup. Within your company you may
         have the need to run with more then one UDDI, let's say one for each department,
         where you limit access to the systems in each department to just their own UDDI
@@ -1098,11 +1291,11 @@
         The notification can be executed in a synchronous and an asynchronous way. The
         asynchronous way requires a listener service to be installed on the node to which
         the notifications should be sent.
-        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-Two_node_example"/>9.2. Two node example setup: Sales and Marketing</h2></div></div></div><p>
+        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-Two_node_example"/>10.2. Two node example setup: Sales and Marketing</h2></div></div></div><p>
         In this example we are setting up a node for 'sales' and a node for 'marketing'.
         For this you need to deploy jUDDI to two different services, then you need to do
         the following setup:
-        </p><div xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="procedure"><a id="proc-Two_node_example_Setup_Node1"/><p class="title"><b>Procedure 9.1. Setup Node 1: Sales</b></p><ol class="1"><li><p>
+        </p><div xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="procedure"><a id="proc-Two_node_example_Setup_Node1"/><p class="title"><b>Procedure 10.1. Setup Node 1: Sales</b></p><ol class="1"><li><p>
                 Create <code class="filename">juddi_custom_install_data</code>.
                 </p><pre class="screen">cd juddiv3/WEB-INF/classes
 mv RENAME4SALES_juddi_custom_install_data juddi_custom_install_data</pre></li><li><p>
@@ -1115,7 +1308,7 @@
                 <a class="xref" href="#chap-root_seed_data" title="Chapter 5. Root Seed Data">Chapter 5, <i>Root Seed Data</i></a>)
                 </p><pre class="screen">bin/startup.sh</pre></li><li><p>
                 Open your browser to <a class="ulink" href="http://sales:8080/juddiv3">http://sales:8080/juddiv3</a>.  You should see:
-                </p><div class="figure"><a id="fig-sales_node_installation"/><div class="figure-contents"><div class="mediaobject"><img src="images/sales_node_installation.png" alt="Sales Node Installation"/></div></div><p class="title"><b>Figure 9.1. Sales Node Installation</b></p></div><br class="figure-break"/></li></ol></div><div xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="procedure"><a id="d0e1599"/><p class="title"><b>Procedure 9.2. Setup Node 2: Marketing</b></p><ol class="1"><li><p>
+                </p><div class="figure"><a id="fig-sales_node_installation"/><div class="figure-contents"><div class="mediaobject"><img src="images/sales_node_installation.png" alt="Sales Node Installation"/></div></div><p class="title"><b>Figure 10.1. Sales Node Installation</b></p></div><br class="figure-break"/></li></ol></div><div xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="procedure"><a id="d0e1743"/><p class="title"><b>Procedure 10.2. Setup Node 2: Marketing</b></p><ol class="1"><li><p>
                 Create <code class="filename">juddi_custom_install_data</code>.
                 </p><pre class="screen">cd juddiv3/WEB-INF/classes
 mv RENAME4MARKETING_juddi_custom_install_data juddi_custom_install_data</pre></li><li><p>
@@ -1129,7 +1322,7 @@
                 </p><pre class="screen">bin/startup.sh</pre></li><li><p>
                 Open your browser to <a class="ulink" href="http://marketing:8080/juddiv3">http://marketing:8080/juddiv3</a> . 
                 You should see:
-                </p><div class="figure"><a id="fig-Marketing_Node_Installation"/><div class="figure-contents"><div class="mediaobject"><img src="images/marketing_node_installation.png" alt="Marketing Node Installation"/></div></div><p class="title"><b>Figure 9.2. Marketing Node Installation</b></p></div><br class="figure-break"/></li></ol></div><p>
+                </p><div class="figure"><a id="fig-Marketing_Node_Installation"/><div class="figure-contents"><div class="mediaobject"><img src="images/marketing_node_installation.png" alt="Marketing Node Installation"/></div></div><p class="title"><b>Figure 10.2. Marketing Node Installation</b></p></div><br class="figure-break"/></li></ol></div><p>
         Note that we kept the root partition the same as sales and marketing are in the
         same company, however the Node Id and Name are different and reflect that this
         node is in 'sales' or 'marketing'.
@@ -1149,7 +1342,7 @@
 </pre><p>
         Log into the sales portal: <a class="ulink" href="http://sales:8080/pluto">http://sales:8080/pluto</a> with 
         username/password: sales/sales.
-        </p><div class="figure"><a id="fig-sales_services"/><div class="figure-contents"><div class="mediaobject"><img src="images/sales_services.png" alt="Sales Services"/></div></div><p class="title"><b>Figure 9.3. Sales Services</b></p></div><br class="figure-break"/><p>
+        </p><div class="figure"><a id="fig-sales_services"/><div class="figure-contents"><div class="mediaobject"><img src="images/sales_services.png" alt="Sales Services"/></div></div><p class="title"><b>Figure 10.3. Sales Services</b></p></div><br class="figure-break"/><p>
         Before logging into the marketing portal, replace marketing's 
 	<code class="filename">uddi-portlet.war/WEB-INF/classes/META-INF/uddi.xml</code>
 	with <code class="filename">udd-portlet.war/WEB-INF/classes/META-INF/uddi.xml.marketing</code>.    
@@ -1166,11 +1359,11 @@
         Now log into the marketing portal <a class="ulink" href="http://marketing:8080/pluto">http://marketing:8080/pluto</a> with
         username/password: marketing/ marketing. In the browser for the marketing node we
         should now see:
-        </p><div class="figure"><a id="fig-marketing_services"/><div class="figure-contents"><div class="mediaobject"><img src="images/marketing_services.png" alt="Marketing Services"/></div></div><p class="title"><b>Figure 9.4. Marketing Services</b></p></div><br class="figure-break"/><p>
+        </p><div class="figure"><a id="fig-marketing_services"/><div class="figure-contents"><div class="mediaobject"><img src="images/marketing_services.png" alt="Marketing Services"/></div></div><p class="title"><b>Figure 10.4. Marketing Services</b></p></div><br class="figure-break"/><p>
         Note that the subscriptionlistener is owned by the Marketing Node business (and
         not the Root Marketing Node). The Marketing Node Business is managed by the
         marketing publisher.
-        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-deploy_HelloSales_service"/>9.3. Deploy the HelloSales Service</h2></div></div></div><p>
+        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-deploy_HelloSales_service"/>10.3. Deploy the HelloSales Service</h2></div></div></div><p>
         The sales department developed a service called HelloSales. The HelloSales service
         is provided in the <code class="filename">juddiv3-samples.war</code>, and it is annotated
         so that it will auto-register. Before deploying the war, edit the
@@ -1213,11 +1406,11 @@
         Now deploy the <code class="filename">juddiv3-samples.war</code> to the sales registry
         node, by building the <code class="filename">juddiv3-samples.war</code> and deploying. The
         HelloWorld service should deploy
-        </p><div class="figure"><a id="fig-Registration_Annotation"/><div class="figure-contents"><div class="mediaobject"><img src="images/registration_by_annotation.png" alt="Registration by Annotation, deploying the juddi-samples.war to the sales Node"/></div></div><p class="title"><b>Figure 9.5. Registration by Annotation, deploying the <code class="filename">juddi-samples.war</code> to the sales Node</b></p></div><br class="figure-break"/><p>
+        </p><div class="figure"><a id="fig-Registration_Annotation"/><div class="figure-contents"><div class="mediaobject"><img src="images/registration_by_annotation.png" alt="Registration by Annotation, deploying the juddi-samples.war to the sales Node"/></div></div><p class="title"><b>Figure 10.5. Registration by Annotation, deploying the <code class="filename">juddi-samples.war</code> to the sales Node</b></p></div><br class="figure-break"/><p>
         On the Marketing UDDI we'd like to subscribe to the HelloWord service, in the
         Sales UDDI Node. As mentioned before there are two ways to do this; synchronously
         and asynchronously.
-        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-config_user_create_subscription"/>9.4. Configure a user to create Subscriptions</h2></div></div></div><p>
+        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-config_user_create_subscription"/>10.4. Configure a user to create Subscriptions</h2></div></div></div><p>
         For a user to create and save subscriptions the publisher needs to have a valid
         login to both the sales and the marketing node. Also if the marketing publisher is
         going to create registry objects in the marketing node, the marketing publisher
@@ -1295,35 +1488,35 @@
         Here we created two clerks for this publisher called 'MarketingCratchit' and
         'SalesCratchit'. This will allow the publisher to check the existing subscriptions
         owned by this publisher in each of the two systems.
-        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-synchronous_notifications"/>9.5. Synchronous Notifications</h2></div></div></div><p>
+        </p></div><div class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="sect-synchronous_notifications"/>10.5. Synchronous Notifications</h2></div></div></div><p>
         While being logged in as the marketing publisher on the marketing portal, we
         should see the following when selecting the UDDISubscription Portlet.
-        </p><div class="figure"><a id="fig-Subscriptions_a_both_nodes_up_b_sales_node_is_down"/><div class="figure-contents"><div class="mediaobject"><img src="images/a_bothup_b_sales_down.png" alt="Subscriptions. In (a) both nodes are up while in (b) the sales node is down"/></div></div><p class="title"><b>Figure 9.6. Subscriptions. In (a) both nodes are up while in (b) the sales node is down</b></p></div><br class="figure-break"/><p>
+        </p><div class="figure"><a id="fig-Subscriptions_a_both_nodes_up_b_sales_node_is_down"/><div class="figure-contents"><div class="mediaobject"><img src="images/a_bothup_b_sales_down.png" alt="Subscriptions. In (a) both nodes are up while in (b) the sales node is down"/></div></div><p class="title"><b>Figure 10.6. Subscriptions. In (a) both nodes are up while in (b) the sales node is down</b></p></div><br class="figure-break"/><p>
         When both nodes came up green you can lick on the 'new subscription' icon in the
         toolbar. Since we are going to use this subscription synchronously only the
         Binding Key and Notification Interval should be left blank, as shown in 
-        <a class="xref" href="#fig-create_a_new_subscription" title="Figure 9.7. Create a New Subscription">Figure 9.7, “Create a New Subscription”</a>. Click the save icon to save the

[... 203 lines stripped ...]


---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org