You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2015/01/29 16:18:09 UTC

[1/6] juddi git commit: JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) record

Repository: juddi
Updated Branches:
  refs/heads/master 2a243727f -> c0354a44f


http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddiv3-war/src/main/webapp/admin/changes.jsp
----------------------------------------------------------------------
diff --git a/juddiv3-war/src/main/webapp/admin/changes.jsp b/juddiv3-war/src/main/webapp/admin/changes.jsp
new file mode 100644
index 0000000..1a86ed2
--- /dev/null
+++ b/juddiv3-war/src/main/webapp/admin/changes.jsp
@@ -0,0 +1,186 @@
+<%-- 
+    Document   : change record browser
+    Created on : Jan 27, 2015, 2:05:35 PM
+    Author     : Alex O'Ree
+/*
+ * Copyright 2001-2008 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.
+ *
+ */
+--%>
+
+
+<%@page import="org.apache.juddi.config.Property"%>
+<%@page import="org.apache.juddi.config.AppConfig"%>
+<%@page import="org.apache.juddi.api_v3.Publisher"%>
+<%@page import="org.apache.juddi.api_v3.SavePublisher"%>
+<%@page import="org.apache.juddi.api_v3.Clerk"%>
+<%@page import="org.apache.juddi.api_v3.SaveClerk"%>
+<%@page import="org.apache.juddi.api_v3.SyncSubscription"%>
+<%@page import="org.apache.juddi.api_v3.GetPublisherDetail"%>
+<%@page import="org.apache.juddi.api_v3.GetAllPublisherDetail"%>
+<%@page import="org.apache.juddi.api_v3.DeletePublisher"%>
+<%@page import="org.uddi.api_v3.DeleteTModel"%>
+<%@page import="org.apache.juddi.v3_service.JUDDIApiPortType"%>
+<%@page import="org.apache.commons.lang.StringEscapeUtils"%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@include file="header-top.jsp"%>
+
+<div class="container">
+
+    <!-- Main hero unit for a primary marketing message or call to action -->
+    <div class="well">
+        <h1><%=ResourceLoader.GetResource(session, "pages.home.admin")%></h1>
+
+    </div>
+
+    <!-- Example row of columns -->
+    <div class="row">
+
+
+        <div class="span12">
+            <% UddiAdminHub x = UddiAdminHub.getInstance(application, session);
+
+            %> 
+            Change Record browser, you can use your left and right keyboard keys to page through the change records<br>
+            You are connected to: <%=StringEscapeUtils.escapeHtml(AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID))%><br>
+            <br>
+            <div>
+
+                <a href="javascript:recordDown();"><i class="icon-circle-arrow-left  icon-2x" id="pageupBusiness"></i></a>
+                <a href="javascript:recordUp();"><i class="icon-circle-arrow-right  icon-2x" id="pagedownBusiness"></i></a>
+                <br>
+                Record ID:    <input type="text" id="recordid" value="1"><Br>
+                NodeID: <input type="text" id="nodeid" value="<%=StringEscapeUtils.escapeHtml(AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID))%>">
+                <br>
+
+
+            </div>
+            <div id="resultsBrowser">
+                <img src="img/bigrollergreen.gif" title="<%=ResourceLoader.GetResource(session, "items.loading")%>"/>
+            </div>
+            <script type="text/javascript">
+
+                function recordUp() {
+                    $("#recordid").val(parseInt($("#recordid").val()) + 1);
+                    go();
+                }
+                function recordDown() {
+                    $("#recordid").val(parseInt($("#recordid").val()) - 1);
+                    if ($("#recordid").val() < 1)
+                    {
+                        $("#recordid").val(1);
+                    }
+                    else
+                        go();
+                }
+                function go() {
+                    var url = 'ajax/go.jsp';
+
+                    var postbackdata = new Array();
+
+                    var x = $("#divselector").val();
+                    postbackdata.push({
+                        name: "soapaction",
+                        value: "changeRecord"
+                    });
+
+                    postbackdata.push({
+                        name: "nonce",
+                        value: $("#nonce").val()
+                    });
+                    postbackdata.push({
+                        name: "recordid",
+                        value: $("#recordid").val()
+                    });
+
+
+                    postbackdata.push({
+                        name: "nodeid",
+                        value: $("#nodeid").val()
+                    });
+
+
+
+
+
+                    var request = $.ajax({
+                        url: url,
+                        type: "POST",
+                        //  data" + i18n_type + ": "html", 
+                        cache: false,
+                        //  processData: false,f
+                        data: postbackdata
+                    });
+
+
+                    request.done(function (msg) {
+                        window.console && console.log('postback done ' + url);
+                        $("#resultsBrowser").html(msg);
+                        //$('#adminresultsmodal').modal();
+
+                    });
+
+                    request.fail(function (jqXHR, textStatus) {
+                        window.console && console.log('postback failed ' + url);
+                        $("#adminresults").html(jqXHR.responseText + textStatus);
+                        $('#adminresultsmodal').modal();
+
+                    });
+                }
+                go(); //run when the page loads
+
+                $(document).keydown(function (e) {
+                    switch (e.which) {
+                        case 37: // left
+                            recordDown();
+                            break;
+
+                        case 39: // right
+                            recordUp();
+                            break;
+
+                        default:
+                            return; // exit this handler for other keys
+                    }
+                    e.preventDefault(); // prevent the default action (scroll / move caret)
+                });
+
+
+            </script>
+            <br>
+            <%=ResourceLoader.GetResource(session, "pages.admin.notes")%>
+
+            <br>
+            <a href="javascript:submitform();" class="btn btn-primary"><%=ResourceLoader.GetResource(session, "actions.go")%></a><br><br>
+            <br>
+
+        </div>
+    </div>
+
+
+    <div class="modal hide fade container " id="adminresultsmodal">
+        <div class="modal-header">
+            <a href="javascript:$('#adminresultsmodal').modal('hide');" class="close" data-dismiss="modal" aria-hidden="true">&times;</a>
+            <h3><%=ResourceLoader.GetResource(session, "items.results")%></h3>
+        </div>
+        <div class="modal-body" align="center">
+            <div id="adminresults"></div>
+        </div>
+        <div class="modal-footer">
+            <a href="javascript:$('#adminresultsmodal').modal('hide');" class="btn btn-primary" data-dismiss="modal"><%=ResourceLoader.GetResource(session, "modal.close")%></a>
+        </div>
+    </div>
+
+    <%@include file="header-bottom.jsp"%>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddiv3-war/src/main/webapp/admin/csrf.jsp
----------------------------------------------------------------------
diff --git a/juddiv3-war/src/main/webapp/admin/csrf.jsp b/juddiv3-war/src/main/webapp/admin/csrf.jsp
index edff942..53d89e7 100644
--- a/juddiv3-war/src/main/webapp/admin/csrf.jsp
+++ b/juddiv3-war/src/main/webapp/admin/csrf.jsp
@@ -48,7 +48,10 @@
             session.removeAttribute("nonce");
             response.sendRedirect("index.jsp");
             UddiAdminHub.log.warn( "CSRF Test failed, no nonce guid." + request.getRemoteAddr() + request.getRemoteUser());
-            throw new CrossSiteRequestForgeryException();
+            //throw new CrossSiteRequestForgeryException();
+            response.sendRedirect("index.jsp");
+                
+                return;
         } else {
 
             String noncestr = (String) session.getAttribute("nonce");
@@ -56,7 +59,10 @@
                 //no session variable to test against, reject it
                 UddiAdminHub.log.warn( "CSRF Test failed, no session guid." + request.getRemoteAddr() + request.getRemoteUser());
                 session.removeAttribute("nonce");
-                throw new CrossSiteRequestForgeryException("Cross Site Request Forgery");
+                //throw new CrossSiteRequestForgeryException("Cross Site Request Forgery");
+                response.sendRedirect("index.jsp");
+                
+                return;
             }
             String postedstr = request.getParameter("nonce");
 
@@ -74,7 +80,10 @@
                 //mismatch, reject it
                 UddiAdminHub.log.warn( "CSRF Test failed, session did not match nonce guid." + request.getRemoteAddr() + request.getRemoteUser());
                 session.removeAttribute("nonce");
-                throw new CrossSiteRequestForgeryException("Cross Site Request Forgery");
+                //throw new CrossSiteRequestForgeryException("Cross Site Request Forgery");
+                response.sendRedirect("index.jsp");
+                
+                return;
             }
         }
     } else {

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddiv3-war/src/main/webapp/admin/home.jsp
----------------------------------------------------------------------
diff --git a/juddiv3-war/src/main/webapp/admin/home.jsp b/juddiv3-war/src/main/webapp/admin/home.jsp
index f237f5e..f4e4edc 100644
--- a/juddiv3-war/src/main/webapp/admin/home.jsp
+++ b/juddiv3-war/src/main/webapp/admin/home.jsp
@@ -52,4 +52,22 @@
         </div>
 
     </div>
+            
+             <div class="row">
+
+
+        <div class="span4">
+            <h2><%=ResourceLoader.GetResource(session, "pages.admin.changes")%></h2>
+            <p><%=ResourceLoader.GetResource(session, "pages.admin.changes.content")%></p>
+            <p><a class="btn btn-primary" href="changes.jsp"><%=ResourceLoader.GetResource(session, "viewdetails")%> &raquo;</a></p>
+        </div>
+        <div class="span4">
+          
+        </div>
+        <div class="span4">
+          
+        </div>
+
+    </div>
+            
 <%@include file="header-bottom.jsp"%>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntitySigned.xml
----------------------------------------------------------------------
diff --git a/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntitySigned.xml b/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntitySigned.xml
new file mode 100644
index 0000000..c717a94
--- /dev/null
+++ b/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntitySigned.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * 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.
+ *
+ */ -->
+<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" businessKey="uddi:uddi.joepublisher.com:businessone">
+    <discoveryURLs>
+        <discoveryURL useType="home">http://www.businessone.com</discoveryURL>
+        <discoveryURL useType="serviceList">http://www.businessone.com/services</discoveryURL>
+    </discoveryURLs>
+    <name xml:lang="en">John Doe Enterprises</name>
+    <name xml:lang="es">Negocio Uno</name>
+    <description xml:lang="en">This is the description for Business One.</description>
+    <contacts>
+        <contact useType="administrator">
+            <description xml:lang="en">This is the administrator of the service offerings.</description>
+            <description xml:lang="es">Éste es el administrador de las ofrendas del servicio.</description>
+            <personName xml:lang="en">John Doe</personName>
+            <personName xml:lang="es">Juan Doe</personName>
+            <phone useType="office">123-456-7890</phone>
+            <phone useType="mobile">987-654-3210</phone>
+            <email useType="work">jdoe@businessone.com</email>
+            <address xml:lang="en" useType="headquarters" sortCode="1" tModelKey="uddi:tmodelKey:address">
+                <addressLine keyName="Suite" keyValue="suite">Suite 1500</addressLine>
+                <addressLine keyName="Street" keyValue="street">1515 Main St.</addressLine>
+                <addressLine keyName="ZipCode" keyValue="citystatezip">Chicago, IL 60614</addressLine>
+                <addressLine keyName="Country" keyValue="country">USA</addressLine>
+            </address>
+        </contact>
+        <contact useType="engineer">
+            <personName xml:lang="en">Steve Smith</personName>
+            <phone useType="office">555-111-2222</phone>
+            <email useType="work">ssmith@businessone.com</email>
+        </contact>
+    </contacts>
+    <identifierBag>
+        <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="identify" keyValue="identity"/>
+    </identifierBag>
+    <categoryBag>
+        <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="category" keyValue="apples"/>
+        <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="category" keyValue="oranges"/>
+        <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="category" keyValue="football"/>
+        <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="category" keyValue="blues"/>
+        <keyedReferenceGroup tModelKey="uddi:uddi.org:categorization:types">
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="blank" keyValue="blank"/>
+        </keyedReferenceGroup>
+    </categoryBag>
+    <ns2:Signature>
+        <ns2:SignedInfo>
+            <ns2:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+            <ns2:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+            <ns2:Reference URI="">
+                <ns2:Transforms>
+                    <ns2:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+                </ns2:Transforms>
+                <ns2:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+                <ns2:DigestValue>rvNogU3NRBPGMKFywVneyEcKY2E=</ns2:DigestValue>
+            </ns2:Reference>
+        </ns2:SignedInfo>
+        <ns2:SignatureValue>fMYrww5viuz3txGgqMkUDdVNLcwt+CHTPsOy9FFYvO8gQQOk+8qQUrjn34cBcNVEZB/jAcfN38Y2BdyLCWfUKL628OhS99anM4jxTM6WmYNLZasemA8ogG2FXIcs4t3ReIQt7yoddKZQIff8CqfCYYmu32PJVLb/r1yXE2WU+WZUBtJIYLbJl8Fobqve2nBBiuqo/IGa4T8OsS0Bp/+T9xDaNNgvSavxRrA2HWru4CAA1x2OL7IDNu9FqKU0Mfd8XLMMElULqn9mkUUz9s9MXr2z9B2xkJg0vKRcjscKAB75O/xekWLpckvInxxyTaVGu9ltIVAYgse0p2f8Q+r8xw==</ns2:SignatureValue>
+        <ns2:KeyInfo>
+            <ns2:X509Data>
+                <ns2:X509SubjectName>CN=Test, OU=JUDDI, O=Apache Software Foundation, ST=MD, C=US, EMAILADDRESS=dev@juddi.apache.org</ns2:X509SubjectName>
+            </ns2:X509Data>
+            <ns2:X509Data>
+                <ns2:X509Certificate>MIIDhDCCAmygAwIBAgIEUbJimDANBgkqhkiG9w0BAQUFADCBgzEjMCEGCSqGSIb3DQEJARYUZGV2QGp1ZGRpLmFwYWNoZS5vcmcxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNRDEjMCEGA1UECgwaQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24xDjAMBgNVBAsMBUpVRERJMQ0wCwYDVQQDDARUZXN0MB4XDTEzMDYwNzIyNDcwOVoXDTE4MDYwNzIyNDcwOVowgYMxIzAhBgkqhkiG9w0BCQEWFGRldkBqdWRkaS5hcGFjaGUub3JnMQswCQYDVQQGEwJVUzELMAkGA1UECAwCTUQxIzAhBgNVBAoMGkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uMQ4wDAYDVQQLDAVKVURESTENMAsGA1UEAwwEVGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJeQKlGDFqJ6MjZE+8VtxDOiYfRnHpIxFGJa/+JVE54ewEtt46ZBjrzusQg7+X+auyWo1dXFsN1T4cfacvlCuEQeC+cli8ODp0BOXMehfMvFwbgDjGqM3dKLPBbCeKUfWuCSE61myaMM4AIzugLysPAc2egTxX5qfahpZn320oN2rBepOUJQjvXFC+KWDgzGOwMiQV9wlYSXo7v2Mpnn/lqjwiBS/LDo0tiZddPUKFtjpLIUmbo7EfOPUEXOWUKrZRVynNVzCA3acNOG0CW5az0dcArC1EwGGsBQXQ9aJMecMxmRjjTnNq7rlmwcQ+jNrKR9rcc/YwY1WobsT4oLDbsCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAAQrCcu12ywSD2qCI0nOKZ/mAx0oAitUGwY0ISMMcgdSUZqam0bGwXSorQ1QkZM92NDFkY33tSkQh8GUrNQX2FyV+rJHJ3pQ3
 oqMNzkGne8PQSiTMbwx4S1nCrnp2hUh+0k9ro4pmJKx9FHrp6LvFIbOMhky7UK41pzBaM46xD27kPhVcPWLrcPMrulsmMo4d9fFnriA0/ow4rIilCMh5TcUdvQyX3T7RWTxb8y1eNuYp8uPWz6VwV+vLDQLPU1CDYhG6IbeJyOpEkxXXhXvv+7KXOQXe3EnS0yf90imssutLJNfv389y/alAZHcY8+petAObXmyWTZeULq/RImtZhA==</ns2:X509Certificate>
+            </ns2:X509Data>
+            <ns2:X509Data>
+                <ns2:X509IssuerSerial>
+                    <ns2:X509IssuerName>CN=Test,OU=JUDDI,O=Apache Software Foundation,ST=MD,C=US,1.2.840.113549.1.9.1=#1614646576406a756464692e6170616368652e6f7267</ns2:X509IssuerName>
+                    <ns2:X509SerialNumber>1370645144</ns2:X509SerialNumber>
+                </ns2:X509IssuerSerial>
+            </ns2:X509Data>
+        </ns2:KeyInfo>
+    </ns2:Signature>
+</businessEntity>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-tck/pref-rpt-1422229264251.txt
----------------------------------------------------------------------
diff --git a/uddi-tck/pref-rpt-1422229264251.txt b/uddi-tck/pref-rpt-1422229264251.txt
new file mode 100644
index 0000000..9117eaf
--- /dev/null
+++ b/uddi-tck/pref-rpt-1422229264251.txt
@@ -0,0 +1,12 @@
+Insert Flat Businesses Bulk = 5.0 tx/ms
+Insert Flat Businesses 1x ManyNames = 0.09740259740259741 tx/ms
+Insert Flat Businesses 1x = 0.1595744680851064 tx/ms
+Delete Flat Businesses Bulk ManyCategories = 1.875 tx/ms
+Insert Flat Businesses Bulk ManyCategories = 0.23255813953488372 tx/ms
+Delete Flat Businesses 1x ManyCategories = 0.11029411764705882 tx/ms
+Delete Flat Businesses Bulk = 5.0 tx/ms
+Insert Flat Businesses 1x ManyCategories = 0.019417475728155338 tx/ms
+Delete Flat Businesses Bulk ManyNames = 3.75 tx/ms
+Delete Flat Businesses 1x = 0.1595744680851064 tx/ms
+Delete Flat Businesses 1x ManyNames = 0.1214574898785425 tx/ms
+Insert Flat Businesses Bulk ManyNames = 3.0 tx/ms

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
index 86afb69..90b1f73 100644
--- a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
+++ b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
@@ -471,7 +471,7 @@ public class JUDDI_300_MultiNodeIntegrationTest {
                 Assume.assumeTrue(TckPublisher.isReplicationEnabled());
                 Assume.assumeTrue(TckPublisher.isJUDDI());
                 try {
-                        TckCommon.PrintMarker();
+                        //TckCommon.PrintMarker();
                         logger.info("testReplicationTModelBusinessPublisherAssertionAddDelete");
 
                         resetTmodels();
@@ -978,15 +978,19 @@ public class JUDDI_300_MultiNodeIntegrationTest {
                         Assert.assertEquals(tModelDetail.getTModel().get(0).isDeleted(), true);
                         logger.info("sam's tModel was deleted(hidden) replicated");
                         // TckCommon.PrintMarker();
+                        logger.info("Test passed");
 
                 } finally {
-                        TckCommon.PrintMarker();
-                        logger.fatal("The test failed, attempting to clean up the business and tModels");
+                        //TckCommon.PrintMarker();
+                        //logger.fatal("The test failed, attempting to clean up the business and tModels");
                         try {
                                 DeleteBusiness db = new DeleteBusiness();
                                 db.setAuthInfo(samTokenNode2);
                                 db.getBusinessKey().add(TckBusiness.SAM_BUSINESS_KEY);
+                                try{
                                 publishSamNode2.deleteBusiness(db);
+                                }
+                                catch (Exception ex){}
                                 int timeout = TckPublisher.getSubscriptionTimeout();
                                 GetBusinessDetail findTModel = new GetBusinessDetail();
                                 findTModel.setAuthInfo(maryTokenNode1);

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_RMIIntegrationTest.java
----------------------------------------------------------------------
diff --git a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_RMIIntegrationTest.java b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_RMIIntegrationTest.java
index 4debdf5..a9268cb 100644
--- a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_RMIIntegrationTest.java
+++ b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_090_RMIIntegrationTest.java
@@ -26,6 +26,7 @@ import static org.apache.juddi.v3.tck.UDDI_090_SubscriptionListenerIntegrationBa
 import static org.apache.juddi.v3.tck.UDDI_090_SubscriptionListenerIntegrationBase.startManager;
 import static org.apache.juddi.v3.tck.UDDI_090_SubscriptionListenerIntegrationBase.stopManager;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 
 /**
@@ -56,23 +57,36 @@ public class UDDI_090_RMIIntegrationTest extends UDDI_090_SubscriptionListenerIn
                         return;
                 }
                 startManager();
-
-                randomPort = 19800 + new Random().nextInt(99);
-                System.out.println("RMI Random port=" + randomPort);
-                //bring up the RMISubscriptionListener
-                URI rmiEndPoint = new URI("rmi://localhost:" + randomPort + "/tck/rmisubscriptionlistener");
-                registry = LocateRegistry.createRegistry(rmiEndPoint.getPort());
-                String path = rmiEndPoint.getPath();
-                hostname = InetAddress.getLocalHost().getHostName();
-                //starting the service
+                int count = 0;
                 rmiSubscriptionListenerService = new UDDISubscriptionListenerImpl(0);
-                //binding to the RMI Registry
-                registry.bind(path, rmiSubscriptionListenerService);
-
-                //double check that the service is bound in the local Registry
-                Registry registry2 = LocateRegistry.getRegistry(rmiEndPoint.getHost(), rmiEndPoint.getPort());
-                registry2.lookup(rmiEndPoint.getPath());
-
+                UDDISubscriptionListenerImpl.notifcationMap.clear();
+                UDDISubscriptionListenerImpl.notificationCount=0;
+                while (true && count < 5) {
+                        try {
+                                count++;
+                                randomPort = 19800 + new Random().nextInt(99);
+                                System.out.println("RMI Random port=" + randomPort);
+                                //bring up the RMISubscriptionListener
+                                URI rmiEndPoint = new URI("rmi://localhost:" + randomPort + "/tck/rmisubscriptionlistener");
+                                registry = LocateRegistry.createRegistry(rmiEndPoint.getPort());
+
+                                String path = rmiEndPoint.getPath();
+                                hostname = InetAddress.getLocalHost().getHostName();
+                                //starting the service
+
+                                //binding to the RMI Registry
+                                registry.bind(path, rmiSubscriptionListenerService);
+
+                                //double check that the service is bound in the local Registry
+                                Registry registry2 = LocateRegistry.getRegistry(rmiEndPoint.getHost(), rmiEndPoint.getPort());
+                                registry2.lookup(rmiEndPoint.getPath());
+                                break;
+                        } catch (Exception ex) {
+                                logger.warn("trouble starting rmi endpoint " + ex.getMessage());
+                        }
+                }
+                Assert.assertNotNull(registry);
+                Assert.assertNotNull(hostname);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-ws/pom.xml.orig
----------------------------------------------------------------------
diff --git a/uddi-ws/pom.xml.orig b/uddi-ws/pom.xml.orig
new file mode 100644
index 0000000..0f234e3
--- /dev/null
+++ b/uddi-ws/pom.xml.orig
@@ -0,0 +1,85 @@
+<?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.
+*
+*/ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<<<<<<< HEAD
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.juddi</groupId>
+        <artifactId>juddi-parent</artifactId>
+        <version>3.2.1-SNAPSHOT</version>
+    </parent>
+    <artifactId>uddi-ws</artifactId>
+    <packaging>bundle</packaging>
+    <name>UDDIv2 and v3 WS Stubs and Schema Bindings Generated from WSDL</name>
+    <profiles>
+=======
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.juddi</groupId>
+		<artifactId>juddi-parent</artifactId>
+		<version>3.3.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>uddi-ws</artifactId>
+	<packaging>bundle</packaging>
+	<name>UDDIv2 and v3 WS Stubs and Schema Bindings Generated from WSDL</name>
+	<profiles>
+>>>>>>> 63d53d0869f8c56ef7f07bc1a09fbe4b1ab825a2
+        <profile>
+            <id>regenerate-source</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>jaxws-maven-plugin</artifactId>
+                        <!-- version??? -->
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>wsimport</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <wsdlDirectory>src/main/resources</wsdlDirectory>
+                            <wsdlFiles>
+                                <wsdlFile>uddi_v3_service.wsdl</wsdlFile>
+                            </wsdlFiles>
+                            <keep>true</keep>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jaxws_2.2_spec</artifactId>
+            <version>1.0</version>
+            <type>jar</type>
+            <scope>provided</scope>
+        </dependency>
+        
+        <dependency>
+            <scope>test</scope>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-databinding-jaxb</artifactId>
+            <version>${cxf.version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageRequest.java
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageRequest.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageRequest.java
new file mode 100644
index 0000000..0b052c2
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageRequest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2015 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.
+ */
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for getFailedReplicationChangeRecordsMessageRequest complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="getFailedReplicationChangeRecordsMessageRequest">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="authInfo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="maxRecords" type="{http://www.w3.org/2001/XMLSchema}long"/>
+ *         &lt;element name="offset" type="{http://www.w3.org/2001/XMLSchema}long"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "getFailedReplicationChangeRecordsMessageRequest", propOrder = {
+    "authInfo",
+    "maxRecords",
+    "offset"
+})
+public class GetFailedReplicationChangeRecordsMessageRequest {
+
+    protected String authInfo;
+    protected long maxRecords;
+    protected long offset;
+
+    /**
+     * Gets the value of the authInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAuthInfo() {
+        return authInfo;
+    }
+
+    /**
+     * Sets the value of the authInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAuthInfo(String value) {
+        this.authInfo = value;
+    }
+
+    /**
+     * Gets the value of the maxRecords property.
+     * 
+     */
+    public long getMaxRecords() {
+        return maxRecords;
+    }
+
+    /**
+     * Sets the value of the maxRecords property.
+     * 
+     */
+    public void setMaxRecords(long value) {
+        this.maxRecords = value;
+    }
+
+    /**
+     * Gets the value of the offset property.
+     * 
+     */
+    public long getOffset() {
+        return offset;
+    }
+
+    /**
+     * Sets the value of the offset property.
+     * 
+     */
+    public void setOffset(long value) {
+        this.offset = value;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageResponse.java
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageResponse.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageResponse.java
new file mode 100644
index 0000000..1fb2e5a
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetFailedReplicationChangeRecordsMessageResponse.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2015 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.
+ */
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.uddi.repl_v3.ChangeRecords;
+
+
+/**
+ * <p>Java class for getFailedReplicationChangeRecordsMessageResponse complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="getFailedReplicationChangeRecordsMessageResponse">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{urn:uddi-org:repl_v3}changeRecords"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "getFailedReplicationChangeRecordsMessageResponse", propOrder = {
+    "changeRecords"
+})
+public class GetFailedReplicationChangeRecordsMessageResponse {
+
+    @XmlElement(namespace = "urn:uddi-org:repl_v3", required = true)
+    protected ChangeRecords changeRecords;
+
+    /**
+     * Gets the value of the changeRecords property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ChangeRecords }
+     *     
+     */
+    public ChangeRecords getChangeRecords() {
+        return changeRecords;
+    }
+
+    /**
+     * Sets the value of the changeRecords property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ChangeRecords }
+     *     
+     */
+    public void setChangeRecords(ChangeRecords value) {
+        this.changeRecords = value;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
index 7d7e663..de93e8e 100644
--- a/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2009 The Apache Software Foundation.
+ * Copyright 2001-2008 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.
@@ -42,8 +42,8 @@ public class ObjectFactory {
 
     private final static QName _AdminDeleteSubscriptionResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_SubscriptionResponse");
     private final static QName _GetReplicationNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_ReplicationNodesResponse");
-    private final static QName _SetReplicationNodes_QNAME = new QName("urn:juddi-apache-org:api_v3", "set_ReplicationNodes");
     private final static QName _GetAllPublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_allPublisherDetail");
+    private final static QName _SetReplicationNodes_QNAME = new QName("urn:juddi-apache-org:api_v3", "set_ReplicationNodes");
     private final static QName _DeleteClerk_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_Clerk");
     private final static QName _SyncSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "sync_subscription");
     private final static QName _AdminSaveTModelResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_tModelResponse");
@@ -53,6 +53,8 @@ public class ObjectFactory {
     private final static QName _AdminSaveBusinessResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_BusinessResponse");
     private final static QName _GetAllClientSubscriptionInfoResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_allClientSubscriptionInfoResponse");
     private final static QName _SyncSubscriptionDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "sync_subscriptionDetail");
+    private final static QName _GetFailedReplicationChangeRecordsMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "getFailedReplicationChangeRecordsMessageResponse");
+    private final static QName _GetFailedReplicationChangeRecordsMessage_QNAME = new QName("urn:juddi-apache-org:api_v3", "getFailedReplicationChangeRecordsMessage");
     private final static QName _InvokeSyncSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "invoke_SyncSubscription");
     private final static QName _AdminSaveSubscriptionResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_SubscriptionResponse");
     private final static QName _DeleteNode_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_Node");
@@ -60,8 +62,8 @@ public class ObjectFactory {
     private final static QName _GetPublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_publisherDetail");
     private final static QName _SavePublisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_publisher");
     private final static QName _DeletePublisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_publisher");
-    private final static QName _SaveClerkRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_ClerkRequest");
     private final static QName _AdminDeleteSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_Subscription");
+    private final static QName _SaveClerkRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_ClerkRequest");
     private final static QName _DeleteClientSubscriptionInfo_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_ClientSubscriptionInfo");
     private final static QName _SaveNodeRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_NodeRequest");
     private final static QName _GetAllNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllNodesResponse");
@@ -86,46 +88,6 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link ClientSubscriptionInfoDetail }
-     * 
-     */
-    public ClientSubscriptionInfoDetail createClientSubscriptionInfoDetail() {
-        return new ClientSubscriptionInfoDetail();
-    }
-
-    /**
-     * Create an instance of {@link NodeDetail }
-     * 
-     */
-    public NodeDetail createNodeDetail() {
-        return new NodeDetail();
-    }
-
-    /**
-     * Create an instance of {@link ClerkDetail }
-     * 
-     */
-    public ClerkDetail createClerkDetail() {
-        return new ClerkDetail();
-    }
-
-    /**
-     * Create an instance of {@link SyncSubscriptionDetailResponse }
-     * 
-     */
-    public SyncSubscriptionDetailResponse createSyncSubscriptionDetailResponse() {
-        return new SyncSubscriptionDetailResponse();
-    }
-
-    /**
-     * Create an instance of {@link PublisherDetail }
-     * 
-     */
-    public PublisherDetail createPublisherDetail() {
-        return new PublisherDetail();
-    }
-
-    /**
      * Create an instance of {@link DeleteClientSubscriptionInfo }
      * 
      */
@@ -198,6 +160,14 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link GetFailedReplicationChangeRecordsMessageResponse }
+     * 
+     */
+    public GetFailedReplicationChangeRecordsMessageResponse createGetFailedReplicationChangeRecordsMessageResponse() {
+        return new GetFailedReplicationChangeRecordsMessageResponse();
+    }
+
+    /**
      * Create an instance of {@link GetEntityHistoryMessageResponse }
      * 
      */
@@ -222,6 +192,14 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link PublisherDetail }
+     * 
+     */
+    public PublisherDetail createPublisherDetail() {
+        return new PublisherDetail();
+    }
+
+    /**
      * Create an instance of {@link SyncSubscriptionRequest }
      * 
      */
@@ -254,6 +232,14 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link GetFailedReplicationChangeRecordsMessageRequest }
+     * 
+     */
+    public GetFailedReplicationChangeRecordsMessageRequest createGetFailedReplicationChangeRecordsMessageRequest() {
+        return new GetFailedReplicationChangeRecordsMessageRequest();
+    }
+
+    /**
      * Create an instance of {@link GetEntityHistoryMessageRequest }
      * 
      */
@@ -398,6 +384,14 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link SyncSubscriptionDetailResponse }
+     * 
+     */
+    public SyncSubscriptionDetailResponse createSyncSubscriptionDetailResponse() {
+        return new SyncSubscriptionDetailResponse();
+    }
+
+    /**
      * Create an instance of {@link SubscriptionWrapper }
      * 
      */
@@ -422,6 +416,22 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link ClientSubscriptionInfoDetail }
+     * 
+     */
+    public ClientSubscriptionInfoDetail createClientSubscriptionInfoDetail() {
+        return new ClientSubscriptionInfoDetail();
+    }
+
+    /**
+     * Create an instance of {@link ClerkDetail }
+     * 
+     */
+    public ClerkDetail createClerkDetail() {
+        return new ClerkDetail();
+    }
+
+    /**
      * Create an instance of {@link AdminSaveBusinessWrapper }
      * 
      */
@@ -462,6 +472,14 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link NodeDetail }
+     * 
+     */
+    public NodeDetail createNodeDetail() {
+        return new NodeDetail();
+    }
+
+    /**
      * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionResponse }{@code >}}
      * 
      */
@@ -480,21 +498,21 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SetReplicationNodes }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllPublisherDetail }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "set_ReplicationNodes")
-    public JAXBElement<SetReplicationNodes> createSetReplicationNodes(SetReplicationNodes value) {
-        return new JAXBElement<SetReplicationNodes>(_SetReplicationNodes_QNAME, SetReplicationNodes.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_allPublisherDetail")
+    public JAXBElement<GetAllPublisherDetail> createGetAllPublisherDetail(GetAllPublisherDetail value) {
+        return new JAXBElement<GetAllPublisherDetail>(_GetAllPublisherDetail_QNAME, GetAllPublisherDetail.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllPublisherDetail }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SetReplicationNodes }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_allPublisherDetail")
-    public JAXBElement<GetAllPublisherDetail> createGetAllPublisherDetail(GetAllPublisherDetail value) {
-        return new JAXBElement<GetAllPublisherDetail>(_GetAllPublisherDetail_QNAME, GetAllPublisherDetail.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "set_ReplicationNodes")
+    public JAXBElement<SetReplicationNodes> createSetReplicationNodes(SetReplicationNodes value) {
+        return new JAXBElement<SetReplicationNodes>(_SetReplicationNodes_QNAME, SetReplicationNodes.class, null, value);
     }
 
     /**
@@ -579,6 +597,24 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetFailedReplicationChangeRecordsMessageResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getFailedReplicationChangeRecordsMessageResponse")
+    public JAXBElement<GetFailedReplicationChangeRecordsMessageResponse> createGetFailedReplicationChangeRecordsMessageResponse(GetFailedReplicationChangeRecordsMessageResponse value) {
+        return new JAXBElement<GetFailedReplicationChangeRecordsMessageResponse>(_GetFailedReplicationChangeRecordsMessageResponse_QNAME, GetFailedReplicationChangeRecordsMessageResponse.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetFailedReplicationChangeRecordsMessageRequest }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getFailedReplicationChangeRecordsMessage")
+    public JAXBElement<GetFailedReplicationChangeRecordsMessageRequest> createGetFailedReplicationChangeRecordsMessage(GetFailedReplicationChangeRecordsMessageRequest value) {
+        return new JAXBElement<GetFailedReplicationChangeRecordsMessageRequest>(_GetFailedReplicationChangeRecordsMessage_QNAME, GetFailedReplicationChangeRecordsMessageRequest.class, null, value);
+    }
+
+    /**
      * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscriptionRequest }{@code >}}
      * 
      */
@@ -642,21 +678,21 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SaveClerk }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionRequest }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_ClerkRequest")
-    public JAXBElement<SaveClerk> createSaveClerkRequest(SaveClerk value) {
-        return new JAXBElement<SaveClerk>(_SaveClerkRequest_QNAME, SaveClerk.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_Subscription")
+    public JAXBElement<AdminDeleteSubscriptionRequest> createAdminDeleteSubscription(AdminDeleteSubscriptionRequest value) {
+        return new JAXBElement<AdminDeleteSubscriptionRequest>(_AdminDeleteSubscription_QNAME, AdminDeleteSubscriptionRequest.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionRequest }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SaveClerk }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_Subscription")
-    public JAXBElement<AdminDeleteSubscriptionRequest> createAdminDeleteSubscription(AdminDeleteSubscriptionRequest value) {
-        return new JAXBElement<AdminDeleteSubscriptionRequest>(_AdminDeleteSubscription_QNAME, AdminDeleteSubscriptionRequest.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_ClerkRequest")
+    public JAXBElement<SaveClerk> createSaveClerkRequest(SaveClerk value) {
+        return new JAXBElement<SaveClerk>(_SaveClerkRequest_QNAME, SaveClerk.class, null, value);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java b/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
index a980249..1707014 100644
--- a/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
+++ b/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
@@ -1,4 +1,19 @@
-
+/*
+ * Copyright 2001-2008 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.
+ *
+ */
 package org.apache.juddi.v3_service;
 
 import java.rmi.RemoteException;
@@ -24,6 +39,8 @@ import org.apache.juddi.api_v3.DeletePublisher;
 import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -479,4 +496,24 @@ public interface JUDDIApiPortType {
         throws DispositionReportFaultMessage
     ,RemoteException;
 
+    /**
+     * 
+     *     gets a list of change records that were received from another node but failed to save locally, usually due to a key conflict
+     *     @since 3.3
+     *     
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(action = "getFailedReplicationChangeRecords")
+    @WebResult(name = "getFailedReplicationChangeRecordsMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(
+        @WebParam(name = "getFailedReplicationChangeRecordsMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        GetFailedReplicationChangeRecordsMessageRequest body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+    
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/uddi-ws/src/main/resources/juddi_api_v1.wsdl
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/resources/juddi_api_v1.wsdl b/uddi-ws/src/main/resources/juddi_api_v1.wsdl
index 4ca22b1..68f4051 100644
--- a/uddi-ws/src/main/resources/juddi_api_v1.wsdl
+++ b/uddi-ws/src/main/resources/juddi_api_v1.wsdl
@@ -432,6 +432,24 @@ xmlns:uddi="urn:uddi-org:api_v3">
   </xs:complexType>
 
 
+
+ <xs:element name="getFailedReplicationChangeRecordsMessage" nillable="true" type="tns:getFailedReplicationChangeRecordsMessageRequest"/>
+  <xs:element name="getFailedReplicationChangeRecordsMessageResponse" nillable="true" type="tns:getFailedReplicationChangeRecordsMessageResponse"/>
+  <xs:complexType name="getFailedReplicationChangeRecordsMessageRequest">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+      <xs:element name="maxRecords" type="xs:long"/>
+      <xs:element name="offset" type="xs:long"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="getFailedReplicationChangeRecordsMessageResponse">
+    <xs:sequence >
+    <xs:element  ref="repl:changeRecords"/>
+  </xs:sequence>  
+  </xs:complexType>
+
+
+
   
   
 </xs:schema>
@@ -620,6 +638,13 @@ xmlns:uddi="urn:uddi-org:api_v3">
     <wsdl:part element="ns1:getEntityHistoryMessageResponse" name="response"></wsdl:part>
   </wsdl:message>
 
+  <wsdl:message name="getFailedReplicationChangeRecordsMessage">
+    <wsdl:part element="ns1:getFailedReplicationChangeRecordsMessage" name="body"></wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getFailedReplicationChangeRecordsMessageResponse">
+    <wsdl:part element="ns1:getFailedReplicationChangeRecordsMessageResponse" name="response"></wsdl:part>
+  </wsdl:message>
+
   
 
 
@@ -825,6 +850,16 @@ xmlns:uddi="urn:uddi-org:api_v3">
       <wsdl:output message="tns:getEntityHistoryMessageResponse" name="getEntityHistoryResponse"></wsdl:output>
       <wsdl:fault name="error" message="uddiport:dispositionReportFaultMessage"/>
     </wsdl:operation>
+
+    <wsdl:operation name="getFailedReplicationChangeRecords">
+   <wsdl:documentation>
+    gets a list of change records that were received from another node but failed to save locally, usually due to a key conflict
+    @since 3.3
+    </wsdl:documentation>
+        <wsdl:input message="tns:getFailedReplicationChangeRecordsMessage" name="getFailedReplicationChangeRecords"></wsdl:input>
+      <wsdl:output message="tns:getFailedReplicationChangeRecordsMessageResponse" name="getFailedReplicationChangeRecordsResponse"></wsdl:output>
+      <wsdl:fault name="error" message="uddiport:dispositionReportFaultMessage"/>
+    </wsdl:operation>
 	
 	
   </wsdl:portType>
@@ -1072,6 +1107,21 @@ xmlns:uddi="urn:uddi-org:api_v3">
     <wsdl:fault name="error"><soap:fault name="error" use="literal"/></wsdl:fault>
     </wsdl:operation>
 
+
+    <wsdl:operation name="getFailedReplicationChangeRecords">
+   
+      <soap:operation soapAction="getFailedReplicationChangeRecords" style="document"/>
+      <wsdl:input name="getFailedReplicationChangeRecords">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="getFailedReplicationChangeRecordsResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    <wsdl:fault name="error"><soap:fault name="error" use="literal"/></wsdl:fault>
+    </wsdl:operation>
+
+
+
   </wsdl:binding>
   <wsdl:service name="JUDDIApiService">
   <wsdl:documentation>This service implements the jUDDI API service</wsdl:documentation> 


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


[3/6] juddi git commit: JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) record

Posted by al...@apache.org.
http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddi_install_data_node3/UDDI_tModels.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddi_install_data_node3/UDDI_tModels.xml b/juddi-tomcat/juddi_install_data_node3/UDDI_tModels.xml
new file mode 100644
index 0000000..9e2120e
--- /dev/null
+++ b/juddi-tomcat/juddi_install_data_node3/UDDI_tModels.xml
@@ -0,0 +1,2362 @@
+<?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.
+*
+*/ -->
+
+<!-- Important notes on editing this file 
+
+1) if you add a new find qualifier item, you must then increase the count in 
+    org.apache.juddi.v3.tck.TckSubscription.FINDQUALIFIER_TMODEL_TOTAL
+
+-->
+
+
+<save_tModel xmlns="urn:uddi-org:api_v3">
+    <tModel tModelKey="uddi:uddi.org:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>uddi-org:keyGenerator</name>
+        <description>UDDI domain key generator</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#keyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+                      keyValue="keyGenerator" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:categorization:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>uddi-org:categorization:keyGenerator
+        </name>
+        <description>Key Generator for UDDI Categorization tModels
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#categorizationKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:categorization:types">
+        <name>uddi-org:types</name>
+        <description>UDDI Type Category System</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#UDDITypes
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:cacheable" keyValue="cacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:categorization:general_keywords">
+        <name>uddi-org:general_keywords</name>
+        <description>Category system consisting of namespace
+            identifiers and the keywords associated with
+            the namespaces.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#GenKW
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:sortorder:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>uddi-org:sortorder:keyGenerator
+        </name>
+        <description>Key Generator for UDDI Sort Order tModels
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#sortorderKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:transport:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>uddi-org:transport:keyGenerator
+        </name>
+        <description>Key Generator for UDDI Transport tModels </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#transportKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:protocol:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>uddi-org:protocol:keyGenerator</name>
+        <description> Key Generator for UDDI Protocol tModels </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#protocolKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:v3_inquiry">
+        <name>uddi-org:inquiry_v3</name>
+        <description>UDDI Inquiry API V3.0</description>
+        <overviewDoc>
+            <overviewURL useType="wsdlInterface">
+                http://uddi.org/wsdl/uddi_api_v3_binding.wsdl#UDDI_Inquiry_SoapBinding
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#InqV3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:soap" keyValue="soapSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:xml" keyValue="xmlSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:specification" keyValue="specification" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:categorization:nodes">
+        <name>uddi-org:nodes</name>
+        <description>Category system for identifying the nodes
+            of a registry.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#Nodes
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+
+    <tModel tModelKey="uddi:uddi.org:v3_publication">
+        <name>uddi-org:publication_v3</name>
+        <description>UDDI Publication API V3.0</description>
+        <overviewDoc>
+            <overviewURL useType="wsdlInterface">
+                http://uddi.org/wsdl/uddi_api_v3_binding.wsdl#UDDI_Publication_SoapBinding
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#PubV3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:soap" keyValue="soapSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:xml" keyValue="xmlSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:specification" keyValue="specification" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:v3_security">
+        <name>uddi-org:security_v3</name>
+        <description>UDDI Security API V3.0</description>
+        <overviewDoc>
+            <overviewURL useType="wsdlInterface">
+                http://uddi.org/wsdl/uddi_api_v3_binding.wsdl#UDDI_Security_SoapBinding
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#SecV3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:soap" keyValue="soapSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:xml" keyValue="xmlSpec" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:specification" keyValue="specification" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+  
+    <tModel tModelKey="uddi:uddi.org:relationships">
+        <name>uddi-org:relationships</name>
+        <description>Basic types of business relationships
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#Relationships
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:categorization:owningbusiness">
+        <name>uddi-org:owningBusiness_v3</name>
+        <description>Category system used to point to the
+            businessEntity
+            associated with the publisher of the tModel.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#owningBusiness
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="entityKeyValues" keyValue="businessKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:identifier:isreplacedby">
+        <name>uddi-org:isReplacedBy</name>
+        <description>Identifier system used to point to the UDDI
+            entity,
+            using UDDI keys, that is the logical replacement
+            for the one in which isReplacedBy is used.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#IsReplacedBy
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:identifier" keyValue="identifier" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="entityKeyValues" keyValue="businessKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+            <keyedReference keyName="entityKeyValues" keyValue="tModelKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:identifier:taxid">
+        <name>Tax ID</name>
+        <description>The Tax Identifier for this business
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+               http://uddi.org/pubs/uddi-v3.0.2-20041019.htm#_Toc515847032
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:identifier" keyValue="identifier" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+
+            <keyedReference keyName="entityKeyValues" keyValue="businessKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+
+            <keyedReference keyName="entityKeyValues" keyValue="tModelKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:categorization:validatedby">
+        <name>uddi-org:validatedBy</name>
+        <description xml:lang="en">Category system used to point a value set or
+            category
+            group system tModel to associated value set Web service
+            implementations.
+        </description>
+        <description xml:lang="en">This is typically used on tModels to validate tModel Instances via the Value Set Validation service. The keyValue
+        should be an existing binding key pointing to that service.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#validatedBy
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="entityKeyValues" keyValue="bindingKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+   
+    
+    
+    
+    <tModel tModelKey="uddi:uddi.org:categorization:derivedfrom">
+        <name>uddi-org:derivedFrom</name>
+        <description>Category system for referring tModels to other
+            tModels for the purpose of reuse.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#DerivedFrom
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="entityKeyValues" keyValue="tModelKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+    
+       
+    <tModel tModelKey="uuid:5678dd4f-f95d-35f9-9ea6-f79a7dd64656">
+        <name>uddi-org:derivedFrom</name>
+        <description>Category system for referring tModels to other
+            tModels for the purpose of reuse.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#DerivedFrom
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:uncacheable" keyValue="uncacheable" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="entityKeyValues" keyValue="tModelKey" tModelKey="uddi:uddi.org:categorization:entitykeyvalues" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uuid:25b22e3e-3dfa-3024-b02a-3438b9050b59"/>
+        </categoryBag>
+    </tModel>
+    
+    
+    
+    
+    <tModel tModelKey="uddi:uddi.org:categorization:entitykeyvalues">
+        <name>uddi-org:entityKeyValues</name>
+        <description>Category system used to declare that a value set
+            uses entity keys as valid values.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#entityKeyValues
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uddi:uddi.org:categorization:validatedby"/>
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uuid:916b87bf-0756-3919-8eae-97dfa325e5a4">
+        <name>uddi-org:entityKeyValues</name>
+        <description>Category system used to declare that a value set
+            uses entity keys as valid values.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#entityKeyValues
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+             <keyedReference keyName="" keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" tModelKey="uuid:25b22e3e-3dfa-3024-b02a-3438b9050b59"/>
+        </categoryBag>
+    </tModel>
+   
+    
+    
+    
+    <tModel tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3">
+        <name>uddi-org:serverAuthenticatedSSL3</name>
+        <description>Secure Sockets Layer Version 3.0 with Server
+            Authentication
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#serverSSL3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!--
+      <tModel tModelKey="uuid:c8aea832-3faf-33c6-b32a-bbfd1b926294">
+        <name>uddi-org:serverAuthenticatedSSL3
+        </name>
+        <description>Secure Sockets Layer Version 3.0 with Server
+            Authentication
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#serverSSL3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    -->
+    <tModel tModelKey="uddi:uddi.org:protocol:mutualauthenticatedssl3">
+        <name>uddi-org:mutualAuthenticatedSSL3
+        </name>
+        <description>Secure Sockets Layer Version 3.0 with Mutual
+            Authentication
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#mutualSSL3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+     <tModel tModelKey="uuid:9555b5b6-55d4-3b0e-bb17-e084fed4e33f">
+        <name>uddi-org:mutualAuthenticatedSSL3
+        </name>
+        <description>Secure Sockets Layer Version 3.0 with Mutual
+            Authentication
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#mutualSSL3
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:transport:http">
+        <name>uddi-org:http</name>
+        <description> A Web service that uses HTTP transport</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overHTTP
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uuid:68DE9E80-AD09-469D-8A37-088422BFBC36">
+        <name>uddi-org:http</name>
+        <description> A Web service that uses HTTP transport</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overHTTP
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+
+
+    <tModel tModelKey="uddi:uddi.org:transport:smtp">
+        <name>uddi-org:smtp</name>
+        <description>E-mail based Web service</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overSMTP
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uuid:93335D49-3EFB-48A0-ACEA-EA102B60DDC6">
+        <name>uddi-org:smtp</name>
+        <description>E-mail based Web service</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overSMTP
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:transport:userfriendlysmtp">
+        <name>Human Readable SMTP Email Deliveries</name>
+        <description>This is a jUDDI extension for providing SMTP based subscription alerts in a human readable fashion.</description>
+        
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:transport:ftp">
+        <name>uddi-org:ftp</name>
+        <description>File Transfer Protocol (FTP) based Web service
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overFTP
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uuid:5FCF5CD0-629A-4C50-8B16-F94E9CF2A674">
+        <name>uddi-org:ftp</name>
+        <description>File Transfer Protocol (FTP) based Web service
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overFTP
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+
+    <tModel tModelKey="uddi:uddi.org:transport:fax">
+        <name>uddi-org:fax</name>
+        <description>Fax-based Web service</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overFax
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:transport:telephone">
+        <name>uddi-org:telephone</name>
+        <description>Telephone based service</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#overPhone
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:transport:rmi">
+        <name>uddi-org:rmi</name>
+        <description>Java RMI based service registered to the Java Registry</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://juddi.apache.org/docs/3.0/userguide/html_single/index.html#sect-overRMI
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:transport:jndi-rmi">
+        <name>uddi-org:jndi-rmi</name>
+        <description>A Java RMI based service registered to a JNDI Registry</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://juddi.apache.org/docs/3.0/userguide/html_single/index.html#sect-overJNDIRMI
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+        <tModel tModelKey="uddi:uddi.org:transport:amqp">
+        <name>uddi-org:amqp</name>
+        <description> A Web service that uses the AMQP transport</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+               http://www.amqp.org/
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+
+    
+            <tModel tModelKey="uddi:uddi.org:transport:omgdds">
+        <name>uddi-org:omgdds</name>
+        <description> A Web service that uses the OMG DDS transport</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+              http://portals.omg.org/dds/
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:transport:udp">
+        <name>uddi-org:udp</name>
+        <description> A Web service that uses the UDP transport</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+              http://docs.oasis-open.org/ws-dd/soapoverudp/1.1/os/wsdd-soapoverudp-1.1-spec-os.html
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:transport:jms">
+        <name>uddi-org:jms</name>
+        <description> A Web service that uses the JMS API</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+              http://docs.oasis-open.org/ws-dd/soapoverudp/1.1/os/wsdd-soapoverudp-1.1-spec-os.html
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:transport" keyValue="transport" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:protocol:rest">
+        <name>uddi-org:protocol:rest</name>
+        <description xml:lang="en">A tModel that represents the Representational State Transfer architectural style</description>
+        <overviewDoc>
+            <overviewURL>
+               http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    
+    
+    <tModel tModelKey="uddi:uddi.org:findqualifier:approximatematch">
+        <name>uddi-org:approximateMatch:SQL99
+        </name>
+        <description>UDDI approximate matching find qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#wildcard
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:exactmatch">
+        <name>uddi-org:exactMatch</name>
+        <description>UDDI exact name matching findQualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#exactmatch
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:caseinsensitivematch">
+        <name>uddi-org:caseInsensitiveMatch
+        </name>
+        <description>UDDI case insensitive matching find qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#caseinsens
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:casesensitivematch">
+        <name>uddi-org:caseSensitiveMatch</name>
+        <description>UDDI Case Sensitive Matching find qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#casesens
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:diacriticsinsensitivematch">
+        <name>uddi-org:diacriticsInsensitiveMatch
+        </name>
+        <description>UDDI Diacritics Insensitive Matching find qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#diacritInsens
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:diacriticssensitivematch">
+        <name>uddi-org:diacriticsSensitiveMatch
+        </name>
+        <description>UDDI Diacritics Sensitive Matching find qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#diacritSens
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:sortorder:binarysort">
+        <name>uddi-org:binarySort</name>
+        <description>UDDI binary sort sortOrder qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#sortOrd
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:sortOrder" keyValue="sortOrder" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:sortorder:uts-10">
+        <name>uddi-org:UTS-10</name>
+        <description>UDDI Unicode Technical Standard #10 sort
+            collation sequence find qualifier
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#UCASort
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:sortOrder" keyValue="sortOrder" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:caseinsensitivesort">
+        <name>uddi-org:caseInsensitiveSort</name>
+        <description>UDDI sort qualifier used to sort results without
+            regard to case
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#caseInsensSort
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:casesensitivesort">
+        <name>uddi-org:caseSensitiveSort</name>
+        <description>UDDI sort qualifier used to sort results using
+            case sensitivity
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#caseSensSort
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+
+            <keyedReference keyName="uddi-org:types:sortOrder" keyValue="sortOrder" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:sortbynameasc">
+        <name>uddi-org:sortByNameAsc</name>
+        <description>UDDI sort qualifier used to sort results by name
+            in ascending order
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#nameAsc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:sortbynamedesc">
+        <name>uddi-org:sortByNameDesc</name>
+        <description>UDDI sort qualifier used to sort results by
+            name in descending order
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#nameDesc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:sortbydateasc">
+        <name>uddi-org:sortByDateAsc</name>
+        <description>UDDI sort qualifier used to sort results by date in
+            ascending order
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#dateAsc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:sortbydatedesc">
+        <name>uddi-org:sortByDateDesc</name>
+        <description>UDDI sort qualifier used to sort results
+            by date in descending order
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#dateDesc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:andallkeys">
+        <name>uddi-org:andAllKeys</name>
+        <description>UDDI find qualifier used to request that a
+            logical AND be performed on bag contents
+            prior to a search
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#andAll
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:orallkeys">
+        <name>uddi-org:orAllKeys</name>
+        <description>UDDI find qualifier used to request that a
+            logical OR be performed on bag contents
+            prior to a search
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#orAll
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:orlikekeys">
+        <name>uddi-org:orLikeKeys</name>
+        <description>UDDI find qualifier used to find entities
+            that reference one of the values from each
+            referenced value set
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#orLike
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:combinecategorybags">
+        <name>uddi-org:combineCategoryBags</name>
+        <description>UDDI find qualifier used to treat all of the
+            categoryBags within a businessEntity as if
+            they were one during inquiry
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#combineCatBags
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:servicesubset">
+        <name>uddi-org:serviceSubset</name>
+        <description>UDDI find qualifier used to use categoryBags
+            of businessService elements to satisfy the
+            find_business inquiry.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#servSubset
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:bindingsubset">
+        <name>uddi-org:bindingSubset</name>
+        <description>UDDI find qualifier for specifying use of
+            categoryBags of bindingTempate elements to satisfy
+            the find_business or find_service inquiries.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#bindSubset
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:suppressprojectedservices">
+        <name>uddi-org:suppressProjectedServices
+        </name>
+        <description>UDDI find qualifier used to exclude service
+            projections from an inquiry function at all
+            levels.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#suppressProjSvcs
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:findqualifier:signaturepresent">
+        <name>uddi-org:signaturePresent</name>
+        <description>UDDI findQualifier used to return only entities
+            that have or are contained in entities that have
+            XML Digital Signatures.
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#sign
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:findQualifier" keyValue="findQualifier" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:specification:hostingredirector">
+        <name>uddi-org:hostingRedirector</name>
+        <description>UDDI Hosting Redirector service specification
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#hostDir
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:specification" keyValue="specification" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:specification:v3_policy">
+        <name>uddi-org:v3_policy</name>
+        <description>UDDI Policy Description service specification
+        </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#policyDesc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:specification" keyValue="specification" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:v3_ownership_transfer">
+        <name>uddi-org:ownership_transfer_v3</name>
+        <description>UDDI Custody and Ownership Transfer API V3.0</description>
+        <overviewDoc>
+            <overviewURL useType="wsdlInterface">
+                http://uddi.org/wsdl/uddi_custody_v3_binding.wsdl
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#OwnershipTransfer
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl"
+                      keyValue="wsdlSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:soap"
+                      keyValue="soapSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:xml"
+                      keyValue="xmlSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:specification"
+                      keyValue="specification"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:v3_subscription">
+        <name>uddi-org:subscription_v3</name>
+        <description>UDDI Subscription API V3.0</description>
+        <overviewDoc>
+            <overviewURL useType="wsdlInterface">
+                http://uddi.org/wsdl/uddi_sub_v3_binding.wsdl
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#Sub
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl"
+                      keyValue="wsdlSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:soap"
+                      keyValue="soapSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:xml"
+                      keyValue="xmlSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:specification"
+                      keyValue="specification"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:v3_subscriptionlistener">
+        <name>uddi-org:subscriptionListener_v3</name>
+        <description>UDDI Subscription Listener API V3.0</description>
+        <overviewDoc>
+            <overviewURL useType="wsdlInterface">
+                http://uddi.org/wsdl/uddi_subr_v3_binding.wsdl
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#Subscribe
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl"
+                      keyValue="wsdlSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:soap"
+                      keyValue="soapSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:xml"
+                      keyValue="xmlSpec"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+            <keyedReference keyName="uddi-org:types:specification"
+                      keyValue="specification"
+                      tModelKey="uddi:uddi.org:categorization:types"/>
+        </categoryBag>
+    </tModel>
+    <!--  New Canonical tModels (see also JUDDI-461) -->
+    <!--  1. WSDL Entity Type tModel -->
+    <tModel tModelKey="uddi:uddi.org:wsdl:types">
+        <name>uddi-org:wsdl:types</name>
+        <description xml:lang="en">WSDL Type Category System</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#wsdlTypes
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+     <tModel tModelKey="uddi:uddi.org:wadl:types">
+        <name>uddi-org:wadl:types</name>
+        <description xml:lang="en">WADL Type Category System</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <!-- 2. XML Namespace tModel  -->
+    <tModel tModelKey="uddi:uddi.org:xml:namespace">
+        <name>uddi-org:xml:namespace</name>
+        <description xml:lang="en">A category system used to indicate namespaces</description>
+        <overviewDoc>
+            <overviewURL>   
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#xmlNamespace
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!-- 3. XML Local Name tModel  -->
+    <tModel tModelKey="uddi:uddi.org:xml:localname">
+        <name>uddi-org:xml:localName</name>
+        <description xml:lang="en">A category system used to indicate XML local names</description>
+        <overviewDoc>
+            <overviewURL>   
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#xmlLocalName
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!--  4. WSDL portType Reference tModel -->
+    <tModel tModelKey="uddi:uddi.org:wsdl:porttypereference">
+        <name>uddi-org:wsdl:portTypeReference</name>
+        <description xml:lang="en">A category system used to reference a wsdl:portType tModel</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#portTypeReference
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!-- 5. SOAP Protocol tModel  -->
+    <tModel tModelKey="uddi:uddi.org:protocol:soap">
+        <name>uddi-org:protocol:soap</name>
+        <description xml:lang="en">A tModel that represents the SOAP 1.1 protocol</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#soap
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+     <tModel tModelKey="uddi:uddi.org:protocol:soap12">
+        <name>uddi-org:protocol:soap12</name>
+        <description xml:lang="en">A tModel that represents the SOAP 1.2 protocol</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#soap
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <!-- 6. HTTP Protocol tModel -->
+    <tModel tModelKey="uddi:uddi.org:protocol:http">
+        <name>uddi-org:protocol:http</name>
+        <description xml:lang="en">A tModel that represents the HTTP protocol</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#http
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:protocol" keyValue="protocol" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!-- 7. Protocol Categorization -->
+    <tModel tModelKey="uddi:uddi.org:wsdl:categorization:protocol">
+        <name>uddi-org:wsdl:categorization:protocol</name>
+        <description xml:lang="en">Category system used to describe the protocol supported by a wsdl:binding</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#protocol
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!-- 8. Transport Categorization -->
+    <tModel tModelKey="uddi:uddi.org:wsdl:categorization:transport">
+        <name>uddi-org:wsdl:categorization:transport</name>
+        <description xml:lang="en">Category system used to describe the transport supported by a wsdl:binding</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#transport
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <!-- 9. WSDL Address tModel -->
+    <tModel tModelKey="uddi:uddi.org:wsdl:address" >
+        <name>uddi-org:wsdl:address</name>
+        <description xml:lang="en">A tModel used to indicate the WSDL address option</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm#Address
+            </overviewURL>
+        </overviewDoc>
+    </tModel>
+    <!-- BPEL Categorization -->
+    <tModel tModelKey="uddi:uddi.org:bpel:types">
+        <name>uddi-org:bpel:types</name>
+        <description xml:lang="en">Category system used indicate BPEL processes</description>
+        <overviewDoc>
+            <overviewURL>
+                http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-bpel-20040725.htm
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+  
+   
+  
+  
+    <tModel tModelKey="uddi:tmodelkey:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>uddi:tmodelkey:keygenerator
+        </name>
+        <description>Key Generator for generic UDDI tModel Keys
+        </description>
+       
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+
+  
+    <tModel tModelKey="uddi:tmodelkey:address">
+        <name>uddi:tmodelkey:address</name>
+        <description xml:lang="en">Identifies an address. This can be a physical, mailing, or electric address.</description>
+       
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" 
+                keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:unchecked"
+                keyValue="unchecked" tModelKey="uddi:uddi.org:categorization:types"/>
+        </categoryBag>
+    </tModel>
+    
+     <tModel tModelKey="uddi:tmodelkey:group">
+        <name>uddi:tmodelkey:group</name>
+        <description xml:lang="en">Identifies a tModel group.</description>
+       
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+
+    <tModel tModelKey="uddi:tmodelkey:blank">
+        <name>uddi:tmodelkey:blank</name>
+        <description xml:lang="en">Identifies a blank tModel</description>
+       
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    
+    
+    
+    
+    <tModel tModelKey="urn:wsdm.org:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>urn:wsdm.org:keygenerator</name>
+        <description>Key Generator for WSDM.org tModels </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#protocolKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+     <tModel tModelKey="urn:wsdm.org:metric:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>urn:wsdm.org:metric:keygenerator</name>
+        <description>Key Generator for WSDM.org Metric tModels </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#protocolKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+     <tModel tModelKey="urn:wsdm.org:identity:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>urn:wsdm.org:identity:keygenerator</name>
+        <description>Key Generator for WSDM.org Identity tModels </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#protocolKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:keygenerator" xmlns="urn:uddi-org:api_v3">
+        <name>urn:wsdm.org:qos:keygenerator</name>
+        <description>Key Generator for WSDM.org Quality of Service tModels </description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#protocolKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:metric:requestcount">
+        <name>RequestCount</name>
+        <description xml:lang="en">The number of requests to a given service. (number of requests)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:metric:replycount">
+        <name>ReplyCount</name>
+        <description xml:lang="en">The number of replies from a given service. (number of replies)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+     <tModel tModelKey="urn:wsdm.org:metric:faultcount">
+        <name>FaultCount</name>
+        <description xml:lang="en">The number of faults from a given service. (number of faults)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:identity:resourceId">
+        <name>ResourceId</name>
+        <description xml:lang="en">This is the unique identity by which the resource (service) is known to the management system.  It is useful for further queries. (resource identification in URI format)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="urn:wsdm.org:metric:lastupdatetime">
+        <name>LastUpdateTime</name>
+        <description xml:lang="en">Represents the last time this metric was updated. (time value)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="urn:wsdm.org:qos:responsetime_average">
+        <name>ResponseTime_Average</name>
+        <description xml:lang="en">Average response time of the service. (numeric value or symbolic rating)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:throughput_count">
+        <name>Throughput_count</name>
+        <description xml:lang="en">Throughput count. (numeric value or symbolic rating)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:throughput_bytes">
+        <name>Throughput_bytes</name>
+        <description xml:lang="en">Throughput bytes. (numeric value or symbolic rating)</description>
+       <overviewDoc> 
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:reliability">
+        <name>Reliability</name>
+        <description xml:lang="en">Reliability or the measure of. (numeric value or symbolic rating)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:reportingperiodstart">
+        <name>ReportingPeriodStart</name>
+        <description xml:lang="en">The beginning on the reporting time period used for the information above. (dateTime)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:reportingperiodend">
+        <name>ReportingPeriodEnd</name>
+        <description xml:lang="en">The end of the reporting time period used for the information above. (dateTime)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="urn:wsdm.org:qos:updateinterval">
+        <name>UpdateInterval</name>
+        <description xml:lang="en">How often is this information updated in UDDI (it is not assumed to be realtime). (duration)</description>
+       <overviewDoc>
+            <overviewURL>
+                https://www.oasis-open.org/committees/download.php/6227/uddi-spec-tc-tn-QoS-metrics-20040224.doc
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="urn:uddi:uddi.org:version">
+        <name>Service Interface Version</name>
+        <description xml:lang="en">When using this tModel as a tModelInstance, it can be used to describe a version associated with either a service interface, a bindingTemplate service instance. Note: This is a jUDDI specific addon and may not be present in other registries.</description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.ibm.com/developerworks/webservices/library/ws-version/
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:iso3166">
+        <name>ubr-uddi-org:iso-ch:3166-2003</name>
+        <name>ISO 3166 Country Codes</name>
+        <description xml:lang="en">When used in a Category Bag for a Business or Service, it can indicate the physical or logically location of the Business or Service.</description>
+        <description xml:lang="en">ISO 3166 Codes for names of countries or regions. Updated with newsletters ISO 3166-1 V-1, V-2, V-3, V-4, V-5, V-6, V-7, ISO 3166-2 I-1, I-2, I-3, I-4.</description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.iso.org/iso/country_codes
+            </overviewURL>
+        </overviewDoc>
+         <overviewDoc>
+        <overviewURL useType="text">
+          http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm#ISO3166
+        </overviewURL> 
+      </overviewDoc> 
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:categorization"      keyValue="categorization"       tModelKey="uddi:uddi.org:categorization:types"/> 
+             <keyedReference keyName="uddi-org:types:cacheable"      keyValue="cacheable"       tModelKey="uddi:uddi.org:categorization:types"/> 
+            <keyedReference keyName="uddi-org:types:valueSet"      keyValue="valueSet"       tModelKey="uddi:uddi.org:categorization:types"/> 
+   
+            
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorizationgroup:unspsc_geo3166">
+        <name>United Nations Standard Products and Services Code with ISO 3166 Grouping</name>
+        <description xml:lang="en">Grouping of the category systems for UNSPSC and ISO 3166. As a consequence, keyedReferenceGroups that reference this tModel describe countries or regions where a product category is offered.</description>
+       <overviewDoc>
+            <overviewURL>
+               http://uddi.org/pubs/uddi-v3.0.2-20041019.htm#_Toc535251470
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL>
+               http://www.unspsc.org/
+            </overviewURL>
+        </overviewDoc>
+        
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+            <keyedReference keyName="uddi-org:types:categorization"      keyValue="categorization"       tModelKey="uddi:uddi.org:categorization:types"/> 
+        </categoryBag>
+    </tModel>
+    
+    
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorizationgroup:wgs84:keygenerator">
+        <name>World Geodetic System Key Generator</name>
+        <description xml:lang="en">Key Generator for Standard for use in cartography, geodesy, and navigation. </description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.ngs.noaa.gov/PUBS_LIB/Geodesy4Layman/TR80003E.HTM#ZZ11
+            </overviewURL>
+        </overviewDoc>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#protocolKeyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:keyGenerator" keyValue="keyGenerator" tModelKey="uddi:uddi.org:categorization:types" />
+         </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorizationgroup:wgs84">
+        <name>World Geodetic System</name>
+        <description xml:lang="en">Standard for use in cartography, geodesy, and navigation. </description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.ngs.noaa.gov/PUBS_LIB/Geodesy4Layman/TR80003E.HTM#ZZ11
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorizationgroup:wgs84:latitude">
+        <name>WGS Latitude</name>
+        <description xml:lang="en">Standard for use in cartography, geodesy, and navigation. </description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.ngs.noaa.gov/PUBS_LIB/Geodesy4Layman/TR80003E.HTM#ZZ11
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorizationgroup:wgs84:longitude">
+        <name>WGS Longitude</name>
+        <description xml:lang="en">Standard for use in cartography, geodesy, and navigation. </description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.ngs.noaa.gov/PUBS_LIB/Geodesy4Layman/TR80003E.HTM#ZZ11
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="org:ubr:categorization:geo_precision">
+        <name xml:lang="en">WGS Geographic Precision</name>
+        <description xml:lang="en">Standard for use in cartography, geodesy, and navigation. </description>
+       <overviewDoc>
+            <overviewURL>
+               http://www.ngs.noaa.gov/PUBS_LIB/Geodesy4Layman/TR80003E.HTM#ZZ11
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference keyName="uddi-org:types:checked" keyValue="checked" tModelKey="uddi:uddi.org:categorization:types" />
+        </categoryBag>
+    </tModel>
+    
+    
+    
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:keygenerator">
+        <name>Universal Business Registry Key Generator</name>
+        <description>UBR domain key generator</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#keyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+                      keyValue="keyGenerator" />
+        </categoryBag>
+    </tModel>
+    <tModel tModelKey="uddi:uddi.org:ubr:categorizationgroup:keygenerator">
+        <name>Universal Business Registry Categorization Group Key Generator</name>
+        <description>UBR Categorization Group domain key generator</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#keyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+                      keyValue="keyGenerator" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:keygenerator">
+        <name>Universal Business Registry Categorization Key Generator</name>
+        <description>UBR Categorization domain key generator</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#keyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+                      keyValue="keyGenerator" />
+        </categoryBag>
+    </tModel>
+    
+     <tModel tModelKey="uddi:uddi.org:ubr:postaladdress">
+      <name>ubr-uddi-org:postalAddress</name>
+      <description xml:lang="en">Postal address structure</description>
+      <overviewDoc>
+        <overviewURL useType="text">
+          http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm#postal
+        </overviewURL>
+      </overviewDoc>
+      <categoryBag>
+        <keyedReference keyName="uddi-org:types:postalAddress"        keyValue="postalAddress"        tModelKey="uddi:uddi.org:categorization:types"/>
+        <keyedReference keyName="uddi-org:types:unchecked"        keyValue="unchecked"        tModelKey="uddi:uddi.org:categorization:types"/>
+       </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:relationships">
+      <name>ubr-uddi-org:relationships</name>
+      <description xml:lang="en">relationships in a UBR</description>
+      <overviewDoc>
+        <overviewURL useType="text">
+          http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm
+        </overviewURL>
+      </overviewDoc>
+      <categoryBag>
+        <keyedReference keyName="uddi-org:types:unchecked"
+          keyValue="unchecked"
+          tModelKey="uddi:uddi.org:categorization:types"/>
+       </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:identifier:keygenerator">
+      <name>ubr-uddi-org:identifier key generator</name>
+      <description>UBR Identifier Group domain key generator</description>
+        <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#keyGen
+            </overviewURL>
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+                      keyValue="keyGenerator" />
+        </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:identifier:owningbusiness">
+      <name>UBR Identifier Owning Business</name>
+      <description xml:lang="en">Identifier for an Owning Business in a UBR</description>
+      <overviewDoc>
+        <overviewURL useType="text">
+          http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm
+        </overviewURL>
+      </overviewDoc>
+      <categoryBag>
+        <keyedReference keyName="uddi-org:types:unchecked"
+          keyValue="unchecked"
+          tModelKey="uddi:uddi.org:categorization:types"/>
+       </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:unspsc">
+      <name>UBR Categorization United Nations Standard Products and Services Code</name>
+      <description xml:lang="en">UNSPSC Categorization in a UBR</description>
+      <overviewDoc>
+        <overviewURL useType="text">
+          http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm
+        </overviewURL>
+      </overviewDoc>
+      <overviewDoc>
+        <overviewURL useType="text">
+          http://www.unspsc.org/
+        </overviewURL>
+      </overviewDoc>
+      
+      <categoryBag>
+        <!--<keyedReference keyName="uddi-org:types:unchecked"        keyValue="unchecked"        tModelKey="uddi:uddi.org:categorization:types"/>-->
+          <keyedReference keyName="uddi-org:types:categorization"      keyValue="categorization"       tModelKey="uddi:uddi.org:categorization:types"/> 
+        <keyedReference keyName="uddi-org:types:checked"      keyValue="checked"       tModelKey="uddi:uddi.org:categorization:types"/> 
+        <keyedReference keyName="uddi-org:types:cacheable"      keyValue="cacheable"       tModelKey="uddi:uddi.org:categorization:types"/> 
+      
+       </categoryBag>
+    </tModel>
+    
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:naics:keygenerator">
+      <name>North American Industry Classification System Key Generator</name>
+      <description xml:lang="en">North American Industry Classification System Key Generator.</description>
+      <description xml:lang="en">The North American Industry Classification System (NAICS) is the standard used by Federal statistical agencies in classifying business establishments for the purpose of collecting, analyzing, and publishing statistical data in the U.S. business economy</description>
+      <overviewDoc>
+            <overviewURL useType="text">
+                http://uddi.org/pubs/uddi_v3.htm#keyGen
+            </overviewURL>
+            <overviewURL useType="text">
+                https://www.census.gov/eos/www/naics/index.html
+            </overviewURL>
+            
+        </overviewDoc>
+        <categoryBag>
+            <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+                      keyValue="keyGenerator" />
+        </categoryBag>
+    </tModel>
+     
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:naics:1997">
+      <name>North American Industry Classification System 1997</name>
+      <description xml:lang="en">North American Industry Classification System 1997</description>
+      <overviewDoc>
+        <overviewURL useType="text">
+          https://www.census.gov/eos/www/naics/reference_files_tools/1997/1997.html
+        </overviewURL>
+        
+      </overviewDoc>
+      <overviewDoc>
+       <overviewURL useType="text">
+            http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm#NAICS 
+         </overviewURL>  
+        </overviewDoc>
+      <categoryBag>
+         <!--<keyedReference keyName="uddi-org:types:unchecked" keyValue="unchecked"  tModelKey="uddi:uddi.org:categorization:types"/>-->
+         <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uddi:uddi.org:categorization:types"/> 
+         <keyedReference keyName="uddi-org:types:checked"  keyValue="checked"   tModelKey="uddi:uddi.org:categorization:types"/> 
+         <keyedReference keyName="uddi-org:types:cacheable"  keyValue="cacheable"  tModelKey="uddi:uddi.org:categorization:types"/> 
+       </categoryBag>
+    </tModel>
+     
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:naics:2012">
+      <name>North American Industry Classification System 2012</name>
+      <description xml:lang="en">North American Industry Classification System 2012</description>
+      <overviewDoc>
+        <overviewURL useType="text">
+          https://www.census.gov/cgi-bin/sssd/naics/naicsrch?chart=2012
+        </overviewURL>
+      </overviewDoc>
+      <categoryBag>
+        <keyedReference keyName="uddi-org:types:unchecked"
+          keyValue="unchecked"
+          tModelKey="uddi:uddi.org:categorization:types"/>
+       </categoryBag>
+    </tModel>
+    
+    <tModel tModelKey="uddi:uddi.org:ubr:categorization:naics:2002">
+      <name>ntis-gov:naics:2002</name> 
+      <name>North American Industry Classification System 2002</name>
+      <description xml:lang="en">North American Industry Classification System 2002</description>
+      <description xml:lang="en">Business Taxonomy: NAICS (2002 Release)</description> 
+      <overviewDoc>
+        <overviewURL useType="text">
+          https://www.census.gov/cgi-bin/sssd/naics/naicsrch?chart=2002
+        </overviewURL>
+      </overviewDoc>
+      <overviewDoc> 
+    <overviewURL>
+      http://uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm#NAICS2002 
+    </overviewURL> 
+  </overviewDoc> 
+      <categoryBag>
+        <keyedReference keyName="uddi-org:types:categorization"     keyValue="categorization"     tModelKey="uddi:uddi.org:categorization:types"/> 
+        <keyedReference keyName="uddi-org:types:checked"      keyValue="checked"       tModelKey="uddi:uddi.org:categorization:types"/> 
+        <keyedReference keyName="uddi-org:types:cacheable"      keyValue="cacheable"       tModelKey="uddi:uddi.org:categorization:types"/> 
+       </categoryBag>
+    </tModel>
+
+
+    
+    <tModel tModelKey="

<TRUNCATED>

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


[2/6] juddi git commit: JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) record

Posted by al...@apache.org.
http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddi_install_data_node3/root_BusinessEntity.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddi_install_data_node3/root_BusinessEntity.xml b/juddi-tomcat/juddi_install_data_node3/root_BusinessEntity.xml
new file mode 100644
index 0000000..c9e695b
--- /dev/null
+++ b/juddi-tomcat/juddi_install_data_node3/root_BusinessEntity.xml
@@ -0,0 +1,668 @@
+<?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.
+ *
+ */ -->
+ <!-- 
+  This file contains the root business entity structure that represents your registry.  The key chosen (or generated) for this entity will serve
+  as the node id for all entities published within the registry.  The services contained within this business entity reflect the UDDI APIs that
+  you wish to support (adding or subtracting the services here will not enable/disable them, simply add/omit them from being discovered via UDDI).
+  
+  The top-level business entity and sub-entities all use keys as unique identifiers.  They are left blank by default which means the system will
+  generate a key (generated as root partition with GUID appended).  You can choose to create your own, human-readable keys but they must match
+  the root key generator created in the root_tModelKeyGen.xml file.  Matching means they must equal the root key generator with the keyword
+  "keygenerator" replaced by your own string.
+  
+  Example:
+  
+  root_tModelKeyGen.xml key is uddi:www.mycompany.com:registry:keygenerator
+  
+  Legal user-defined keys are:
+  
+  uddi:www.mycompany.com:registry:ubr-node (for the businessKey)
+  uddi:www.mycompany.com:registry:inquiry-service (for the inquiry service service key)
+  uddi:www.mycompany.com:registry:inquiry-service-wsdlDeployment (for the inquiry service binding template that represents the WSDL)
+  
+  
+See below for other fields that you may want to edit...
+-->
+<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:yet.another.juddi.apache.org:node3">
+     <!-- Change the name field to represent the name of your registry -->
+     <name xml:lang="en">An Apache jUDDI Node (3)</name>
+     <!-- Change the description field to provided a brief description of your registry -->
+     <description xml:lang="en">This is a UDDI registry node as implemented by Apache jUDDI.</description>
+     <discoveryURLs>
+          <!-- This discovery URL should point to the home installation URL of jUDDI -->
+          <discoveryURL useType="homepage">${juddi.server.baseurl}</discoveryURL>
+     </discoveryURLs>
+     <categoryBag>
+          <keyedReference tModelKey="uddi:uddi.org:categorization:nodes" keyValue="node"  keyName="uddi.org:categorization:nodes"/>
+     </categoryBag>
+     <businessServices>
+          <!-- As mentioned above, you may want to provide user-defined keys for these (and the services/bindingTemplates below.  Services that you
+          don't intend to support should be removed entirely -->
+          <!-- inquiry v3 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-inquiry" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Inquiry Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Inquiry API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-inquiry-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-inquiry">
+                         <description>UDDI Inquiry API V3</description>
+                         <!-- This should be changed to the WSDL URL of the inquiry API.  An access point inside a bindingTemplate will be found for every service
+                         in this file.  They all must point to their API's WSDL URL -->
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/inquiry?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_inquiry">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                  <?xml version="1.0" encoding="utf-8" ?>
+                  <UDDIinstanceParmsContainer xmlns="urn:uddi-org:policy_v3_instanceParms">
+                    <defaultSortOrder>
+                      uddi:uddi.org:sortorder:binarysort
+                    </defaultSortOrder>
+                  </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+    
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-inquiry-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-inquiry">
+                         <description>UDDI Inquiry API V3 SSL</description>
+                         <!-- This should be changed to the WSDL URL of the inquiry API.  An access point inside a bindingTemplate will be found for every service
+                         in this file.  They all must point to their API's WSDL URL -->
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/inquiry?wsdl</accessPoint> 
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_inquiry">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                  <?xml version="1.0" encoding="utf-8" ?>
+                  <UDDIinstanceParmsContainer xmlns="urn:uddi-org:policy_v3_instanceParms">
+                    <defaultSortOrder>
+                      uddi:uddi.org:sortorder:binarysort
+                    </defaultSortOrder>
+                  </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3"/>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDIInquiryService"/>
+               </categoryBag>
+          </businessService>
+          <!-- inquiry v2 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-inquiryv2" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDIv2 Inquiry Service</name>
+               <description xml:lang="en">Web Service supporting UDDIv2 Inquiry API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-inquiryv2-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-inquiryv2">
+                         <description>UDDI Inquiry API V2</description>
+                         <!-- This should be changed to the WSDL URL of the inquiry API.  An access point inside a bindingTemplate will be found for every service
+                         in this file.  They all must point to their API's WSDL URL -->
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/inquiryv2?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+    
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-inquiryv2-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-inquiryv2">
+                         <description>UDDI Inquiry API V3 SSL</description>
+                         <!-- This should be changed to the WSDL URL of the inquiry API.  An access point inside a bindingTemplate will be found for every service
+                         in this file.  They all must point to their API's WSDL URL -->
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/inquiryv2?wsdl</accessPoint> 
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3"/>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:inquiry_v2"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="Inquire"/>
+               </categoryBag>
+          </businessService>
+          <!-- inquiry v3 REST -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-inquiry-rest" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Inquiry REST Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Inquiry API via HTTP GET</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-inquiry-rest" serviceKey="uddi:yet.another.juddi.apache.org:services-inquiry-rest">
+                         <description>UDDI Inquiry API V3 REST</description>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:rest" />
+                         </tModelInstanceDetails>
+                         <accessPoint useType="wadlDeployment">${juddi.server.baseurl}/services/inquiryRest?_wadl</accessPoint>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wadl" keyValue="wadlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-inquiry-rest-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-inquiry-rest">
+                         <description>UDDI Inquiry API V3 REST SSL</description>
+                         <accessPoint useType="wadlDeployment">${juddi.server.baseurlsecure}/services/inquiryRest?_wadl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3"/>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:rest" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wadl" keyValue="wadlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="localhost"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wadl:types" keyName="uddi-org:wadl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="Servicename"/>
+               </categoryBag>
+          </businessService>
+          <!-- publish v3 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-publish" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Publish Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Publish API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-publish-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-publish">
+                         <description>UDDI Publication API V3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/publish?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_publication">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                  <?xml version="1.0" encoding="utf-8" ?>
+                  <UDDIinstanceParmsContainer xmlns="urn:uddi-org:policy_v3_instanceParms">
+                    <authInfoUse>required</authInfoUse>
+                  </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-publish-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-publish">
+                         <description>UDDI Publication API V3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/publish?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_publication">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                  <?xml version="1.0" encoding="utf-8" ?>
+                  <UDDIinstanceParmsContainer xmlns="urn:uddi-org:policy_v3_instanceParms">
+                    <authInfoUse>required</authInfoUse>
+                  </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_security" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDIPublicationService"/>
+               </categoryBag>
+          </businessService>
+ 
+          <!-- publish v2 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-publishv2" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDIv2 Publish Service</name>
+               <description xml:lang="en">Web Service supporting UDDIv2 Publish API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-publishv2-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-publishv2">
+                         <description>UDDIv2 Publication API V2</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/publishv2?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-publishv2-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-publishv2">
+                         <description>UDDI Publication API V2 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/publishv2?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:inquiry_v2"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="Publish"/>
+               </categoryBag>
+          </businessService>
+ 
+          <!-- security v3 -->
+
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-security" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Security Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Security API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-security-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-security">
+                         <description>UDDI Security API V3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/security?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_security" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-security-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-security">
+                         <description>UDDI Security API V3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/security?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_security" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDISecurityService"/>
+               </categoryBag>
+          </businessService>
+          <!-- custody v3 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-custodytransfer" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Custody and Ownership Transfer Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Custody and Ownership Transfer API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-custodytransfer-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-custodytransfer">
+                         <description>UDDI Custody and Ownership Transfer API V3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/custody-transfer?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_ownership_transfer">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                <?xml version="1.0" encoding="utf-8" ?>
+                <UDDIinstanceParmsContainer
+                 xmlns="urn:uddi-org:policy_v3_instanceParms">
+                  <authInfoUse>required</authInfoUse>
+                </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+			  
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-custodytransfer-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-custodytransfer">
+                         <description>UDDI Custody and Ownership Transfer API V3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/custody-transfer?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_ownership_transfer">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                <?xml version="1.0" encoding="utf-8" ?>
+                <UDDIinstanceParmsContainer
+                 xmlns="urn:uddi-org:policy_v3_instanceParms">
+                  <authInfoUse>required</authInfoUse>
+                </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3"/>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+		
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDICustodyTransferService"/>
+               </categoryBag>
+          </businessService>
+                
+          <!-- subscription v3 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-subscription" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Subscription Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Subscription API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-subscription-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-subscription">
+                         <description>UDDI Subscription API V3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/subscription?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_subscription">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                <?xml version="1.0" encoding="utf-8" ?>
+                <UDDIinstanceParmsContainer
+                xmlns="urn:uddi-org:policy_v3_instanceParms">
+                <authInfoUse>required</authInfoUse>
+                <filterUsingFindAPI>supported</filterUsingFindAPI>
+                </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-subscription-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-subscription">
+                         <description>UDDI Subscription API V3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/subscription?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_subscription">
+                                   <instanceDetails>
+                                        <instanceParms>
+                <![CDATA[
+                <?xml version="1.0" encoding="utf-8" ?>
+                <UDDIinstanceParmsContainer
+                xmlns="urn:uddi-org:policy_v3_instanceParms">
+                <authInfoUse>required</authInfoUse>
+                <filterUsingFindAPI>supported</filterUsingFindAPI>
+                </UDDIinstanceParmsContainer>
+                ]]>
+                                        </instanceParms>
+                                   </instanceDetails>
+                              </tModelInstanceInfo>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3"/>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDISubscriptionService"/>
+               </categoryBag>
+          </businessService>
+          <!-- subscription listener v3 -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-subscriptionlistener" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Subscription Listener Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Subscription Listener API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-subscriptionlistener-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-subscriptionlistener">
+                         <description>UDDI Subscription Listener API V3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/subscription-listener?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_subscriptionlistener" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-subscriptionlistener-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-subscriptionlistener">
+                         <description>UDDI Subscription Listener API V3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/subscription-listener?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_subscriptionlistener" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+		
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:uddi-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDISubscriptionListenerService"/>
+               </categoryBag>
+          </businessService>
+	
+
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-valueset" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Value Set API Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Value Set Validation service. This service provides tModel value validation and is
+                    configured using the jUDDI Publisher Service</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-valueset-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-valueset">
+                         <description>UDDI Value Set Validation API Version 3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/valueset-validation?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_valuesetvalidation" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-valueset-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-valueset">
+                         <description>UDDI Value Set Validation API Version 3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/valueset-validation?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_valuesetvalidation" />
+
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-valueset-cp" serviceKey="uddi:yet.another.juddi.apache.org:services-valueset">
+                         <description>UDDI Value Set Validation API Version 3 using InVM Classpath Transport. Use this endpoint for Value Set Validation when
+                              located on the same instance of jUDDI.</description>
+                         <accessPoint useType="classpath">classpath:/org.apache.juddi.api.impl.UDDIValueSetValidationImpl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_valuesetvalidation" />
+                         </tModelInstanceDetails>
+                    </bindingTemplate>
+		
+               </bindingTemplates>
+          </businessService>
+	
+	
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-valueset-cache" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Value Set Caching API Service</name>
+               <description xml:lang="en">Web Service supporting UDDI Value Set Caching service. This service provides tModel value validation and is
+                    configured using the jUDDI Publisher Service</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-valueset-cache-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-valueset-cache">
+                         <description>UDDI Value Set Caching API Version 3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/valueset-caching?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi-org:valueSetCaching_v3" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+		
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-valueset-cache-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-valueset-cache">
+                         <description>UDDI Value Set caching API Version 3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/valueset-caching?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi-org:valueSetCaching_v3" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+
+
+
+
+
+                         </categoryBag>
+                    </bindingTemplate>
+		
+               </bindingTemplates>
+          </businessService>
+	
+	
+	
+
+
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:replication" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">UDDI Replication API Version 3</name>
+               <description xml:lang="en">UDDI Replication API Version 3</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-replication-ws" serviceKey="uddi:yet.another.juddi.apache.org:replication">
+                         <description>UDDI Value Set Validation API Version 3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/replication?wsdl</accessPoint>
+
+                         <tModelInstanceInfo
+                              tModelKey="uddi:uddi.org:v3_replication" />
+                         <tModelInstanceInfo 
+                              tModelKey="uddi:uddi.org:protocol:mutualauthenticatedssl3" />
+		  
+
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+          </businessService>
+	
+	
+                
+          <!-- juddi api service -->
+          <businessService serviceKey="uddi:yet.another.juddi.apache.org:services-publisher" businessKey="uddi:yet.another.juddi.apache.org:node3">
+               <name xml:lang="en">jUDDI Publisher Service</name>
+               <description xml:lang="en">Web Service supporting jUDDI specific API</description>
+               <bindingTemplates>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-publisher-ws" serviceKey="uddi:yet.another.juddi.apache.org:services-publisher">
+                         <description>jUDDI Publisher Service API V3</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/publisher?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+                    <bindingTemplate bindingKey="uddi:yet.another.juddi.apache.org:servicebindings-publisher-ws-ssl" serviceKey="uddi:yet.another.juddi.apache.org:services-publisher">
+                         <description>jUDDI Publisher Service API V3 SSL</description>
+                         <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/publisher?wsdl</accessPoint>
+                         <tModelInstanceDetails>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:serverauthenticatedssl3"/>
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:protocol:soap" />
+                              <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http" />
+			
+                         </tModelInstanceDetails>
+                         <categoryBag>
+                              <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+                         </categoryBag>
+                    </bindingTemplate>
+               </bindingTemplates>
+               <categoryBag>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi-org:xml:namespace" keyValue="urn:juddi-apache-org:v3_service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi-org:wsdl:types" keyValue="service"/>
+                    <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="JUDDIApiService"/>
+               </categoryBag>
+          </businessService>
+     </businessServices>
+</businessEntity>
+
+
+
+

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddi_install_data_node3/root_Publisher.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddi_install_data_node3/root_Publisher.xml b/juddi-tomcat/juddi_install_data_node3/root_Publisher.xml
new file mode 100644
index 0000000..a5949f1
--- /dev/null
+++ b/juddi-tomcat/juddi_install_data_node3/root_Publisher.xml
@@ -0,0 +1,21 @@
+<?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.
+ *
+ */ -->
+<publisher xmlns="urn:juddi-apache-org:api_v3" authorizedName="root">
+  <publisherName>root publisher</publisherName>
+  <isAdmin>true</isAdmin>
+</publisher>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddi_install_data_node3/root_tModelKeyGen.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddi_install_data_node3/root_tModelKeyGen.xml b/juddi-tomcat/juddi_install_data_node3/root_tModelKeyGen.xml
new file mode 100644
index 0000000..4517135
--- /dev/null
+++ b/juddi-tomcat/juddi_install_data_node3/root_tModelKeyGen.xml
@@ -0,0 +1,40 @@
+<?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.
+ *
+ */ -->
+<!-- 
+  In this file, you only need to edit the tModelKey just below.  This will determine your root partition; the base that all system-generated
+  keys will use.  The keywords "uddi" and "keygenerator" must enclose the partition, but you are free to edit the interior.  The general format
+  is a domain name followed by a colon-delimited list of keywords (known as key-specific strings).
+  
+  Examples:
+  
+  uddi:www.mycompany.com:registry:keygenerator
+  uddi:uddi.acme.com:keygenerator
+  uddi:engineering.umich.edu:soa:ubr:keygenerator
+ -->
+<tModel tModelKey="uddi:yet.another.juddi.apache.org:keygenerator" xmlns="urn:uddi-org:api_v3">
+  <name>uddi-org:keyGenerator</name>
+  <description>Root domain key generator</description>
+  <overviewDoc>
+    <overviewURL useType="text">
+      http://uddi.org/pubs/uddi_v3.htm#keyGen</overviewURL>
+  </overviewDoc>
+  <categoryBag>
+    <keyedReference tModelKey="uddi:yet.uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+      keyValue="keyGenerator" />
+  </categoryBag>
+</tModel>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddiv3Node2.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddiv3Node2.xml b/juddi-tomcat/juddiv3Node2.xml
index 0b193a4..f92df63 100644
--- a/juddi-tomcat/juddiv3Node2.xml
+++ b/juddi-tomcat/juddiv3Node2.xml
@@ -43,7 +43,7 @@
 			<!-- this is the 'root' username, or owner of the node -->
 			<publisher>root</publisher>
 			<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
-			<businessId>uddi:another.juddi.apache.org:businesses-asf</businessId>
+			<businessId>uddi:another.juddi.apache.org:node2</businessId>
 			<partition>uddi:another.juddi.apache.org</partition>
 		</root>
 		<seed>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddiv3Node3.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddiv3Node3.xml b/juddi-tomcat/juddiv3Node3.xml
new file mode 100644
index 0000000..22b79bc
--- /dev/null
+++ b/juddi-tomcat/juddiv3Node3.xml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"  ?>
+<!-- 
+/*
+ * Copyright 2001-2008 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.
+ */
+ -->
+<!--
+################################################################
+#                 jUDDI-v3.0 configuration.                    #
+################################################################
+# Note that the property settings in this                      #
+# file can be overriden by system parameters                   #
+#                                                              #
+################################################################
+-->
+<config>
+	<juddi>
+		<!-- The ${juddi.server.baseurl} token can be referenced in accessPoints and will be resolved at runtime. -->
+		<server>
+			<baseurl>http://localhost:10080/juddiv3</baseurl>
+			<baseurlsecure>https://localhost:10443/juddiv3</baseurlsecure>
+		</server>
+		<!-- The node Id must be unique when setup in a cluster of UDDI servers implementing the replication API
+			don't worry, jUDDI doesn't implement it right now, but it may come in the future 
+			
+			 Per the spec, The value used MUST match the businessKey of the Node Business Entity
+			 -->
+		<nodeId>uddi:yet.another.juddi.apache.org:node3</nodeId>
+		<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
+		<root>
+			<!-- this is the 'root' username, or owner of the node -->
+			<publisher>root</publisher>
+			<!-- The key of the root business that all of the UDDI services are registered in, as defined in the install_data -->
+			<businessId>uddi:yet.another.juddi.apache.org:node3</businessId>
+			<partition>uddi:yet.another.juddi.apache.org</partition>
+		</root>
+		<seed>
+			<always>false</always>
+		</seed>
+
+		<!-- Name of the persistence unit to use (the default, "juddiDatabase" refers to the unit compiled into the juddi library)-->
+		<persistenceunit>
+			<name>juddiDatabase</name>
+		</persistenceunit>
+
+		<!-- Check-the-time-stamp-on-this-file Interval in milli seconds  -->
+		<configuration>
+			<reload>
+				<delay>2000</delay>
+			</reload>
+		</configuration>
+		<!--Default locale-->
+		<locale>en_US</locale>
+
+		<!--The UDDI Operator Contact Email Address-->
+		<operatorEmailAddress>admin@local.localhost</operatorEmailAddress>
+
+		<!-- The maximum name size and maximum number of name elements allows in several of the FindXxxx and SaveXxxx UDDI functions.-->
+		<maxNameLength>255</maxNameLength>
+		<maxNameElementsAllowed>5</maxNameElementsAllowed>
+
+
+		<!-- The maximum number of rows returned in a find_* operation.  Each call can set this independently, but this property defines a global maximum.-->
+		<maxRows>1000</maxRows>
+		<!-- The maximum number of "IN" clause parameters.  Some RDMBS limit the number of parameters allowed in a SQL "IN" clause.-->
+		<maxInClause>1000</maxInClause>
+
+		<!-- The maximum number of UDDI artifacts allowed per publisher. A value of '-1' indicates any  number of artifacts is valid (These values can be overridden at the individual publisher level).-->
+		<maxBusinessesPerPublisher>-1</maxBusinessesPerPublisher>
+		<maxServicesPerBusiness>-1</maxServicesPerBusiness>
+		<maxBindingsPerService>-1</maxBindingsPerService>
+		<maxTModelsPerPublisher>-1</maxTModelsPerPublisher>
+
+		<!-- Days before a transfer request expires-->
+		<transfer>
+			<expiration>
+				<days>3</days>
+			</expiration>
+		</transfer>
+
+		<!-- Days before a subscription expires-->
+		<subscription>
+			<expiration>
+				<days>30</days>
+			</expiration>
+
+			<!-- Minutes before a "chunked" subscription call expires-->
+			<chunkexpiration>
+				<minutes>5</minutes>
+			</chunkexpiration>
+
+			<!--Since 3.1.5 the maxium ammount of returned subscription entities allowed-->
+			<maxentities>1000</maxentities>
+		</subscription>
+
+		<!-- jUDDI UUIDGen implementation to use-->
+		<uuidgen>org.apache.juddi.uuidgen.DefaultUUIDGen</uuidgen>
+
+		<!-- jUDDI Cryptor implementation to use-->
+		<cryptor>org.apache.juddi.cryptor.DefaultCryptor</cryptor>
+
+		<!-- jUDDI Key Generator to use-->
+		<keygenerator>org.apache.juddi.keygen.DefaultKeyGenerator</keygenerator>
+
+		<notification>
+			<!-- Specifies the interval at which the notification timer triggers-->
+			<interval>5000</interval>
+			<!-- Specifies the amount of time to wait before the notification timer initially fires-->
+			<start>
+				<buffer>0</buffer>
+			</start>
+			<acceptableLagtime>1000</acceptableLagtime>
+			<maxTries>3</maxTries>
+			<!-- 10 minutes -->
+			<maxTriesResetInterval>600000</maxTriesResetInterval>
+			<sendAuthTokenWithResultList>false</sendAuthTokenWithResultList>
+		</notification>
+		<!-- All Authentication related settings -->
+		<auth>
+			<!-- Specifies whether the inquiry API requires authentication, all other APIs require authN-->
+			<Inquiry>false</Inquiry>
+			
+			<!-- When using file based authentication, this is the filename to use 
+			<usersfile>juddi-users.xml</usersfile>-->
+			<!-- jUDDI Authentication module to use-->
+			<authenticator>
+				<!-- build in Authenticators:
+				org.apache.juddi.v3.auth.JUDDIAuthenticator - no authentication
+				LDAP Based
+				org.apache.juddi.v3.auth.LdapSimpleAuthenticator - use LDAP
+				org.apache.juddi.v3.auth.LdapExpandedAuthenticator - use LDAP
+				
+				File based, see usersfile
+				org.apache.juddi.v3.auth.XMLDocAuthenticator - XML doc, clear text
+				org.apache.juddi.v3.auth.CryptedXMLDocAuthenticator - XML doc, encrypted
+				org.apache.juddi.v3.auth.MD5XMLDocAuthenticator - XML doc, Hashed
+				-->
+				<class>org.apache.juddi.v3.auth.JUDDIAuthenticator</class>
+				<!-- other settings
+				url
+				initialcontext
+				style
+				ldapexp
+				
+				-->
+			</authenticator>
+
+			<token>
+				<!-- Time in minutes to expire tokes after inactivity-->
+				<Timeout>15</Timeout>
+				<!-- As of 3.1.5 Duration of time for tokens to expire, regardless of inactivity -->
+				<Expiration>15</Expiration>
+			</token>
+		</auth>
+
+
+
+
+		<validation>
+			<!-- As of 3.1.5 This setting will force referential integrity for all tModels (except keyGenerators), category bags, bindingTemplate/AccessPoint/hostingRedirector (referencing another host), tModelinstanceparms and anything else that references a KeyName default value is true.  set to false for backwards compatibility or for a more lax registry-->
+			<enforceReferentialIntegrity>true</enforceReferentialIntegrity>
+			<!-- as of 3.3, reject digitally signed items that are invalid-->
+            <rejectInvalidSignatures>
+                <enable>false</enable>
+                <trustStorePath>truststore.jks</trustStorePath>
+                <trustStoreType>JKS</trustStoreType>
+                <trustStorePassword
+                        isPasswordEncrypted="false" 
+                        cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</trustStorePassword>
+
+                <checkTimestamps>true</checkTimestamps>
+                <checkTrust>true</checkTrust>
+                <checkRevocationCRL>true</checkRevocationCRL>
+            </rejectInvalidSignatures>
+		</validation>
+
+		<!--As of 3.1.5 Email delivery options for subscription API functions-->
+		<mail>
+			<smtp>
+				<!--The Operator’s Email address
+				<from>admin@local.localhost</from>-->
+
+				<!--the hostname of the SMTP server
+				<host>localhost</host>-->
+
+				<!--The portname of the SMTP server
+				<port>25</port>-->
+
+				<!--If set, specifies the name of a class that implements the javax.net.SocketFactory interface. This class will be used to create SMTP sockets.-->
+				<socketFactory>
+					<!--<class></class>-->
+
+					<!--If set to true, failure to create a socket using the specified socket factory class will cause the socket to be created using the java.net.Socket class. Defaults to true.
+					<fallback>true</fallback>-->
+					<!--Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used.
+					<port>25</port>-->
+				</socketFactory>
+				<!--if true, enables the use of the STARTTLS command (if supported by the server) to switch the connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must configured so that the client will trust the server’s certificate. Defaults to false.
+				<starttls>
+					<enabled>false</enabled>
+				</starttls>-->
+
+				<!--If true, attempt to authenticate the user using the AUTH command. Defaults to false.
+				<auth>false</auth>-->
+
+				<!--Username used to authenticate to the SMTP server used only if mail.smtp.auth is true
+				<user>user</user>-->
+
+				<!--Password used to authenticate to the SMTP server, used only if mail.smtp.auth is true
+				<password encrypted="false">pass</password>-->
+			</smtp>
+		</mail>
+		
+		<logging>
+			<logInquirySearchPayloads>false</logInquirySearchPayloads>
+		</logging>
+	</juddi>
+</config>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/pom.xml b/juddi-tomcat/pom.xml
index 89fc255..f5d8a17 100644
--- a/juddi-tomcat/pom.xml
+++ b/juddi-tomcat/pom.xml
@@ -75,11 +75,11 @@
 			<artifactId>log4j</artifactId>
 			<version>1.2.13</version>
 		</dependency>
-<dependency>
-	<groupId>org.json</groupId>
-	<artifactId>json</artifactId>
-	<version>20090211</version>
-</dependency>
+            <dependency>
+                    <groupId>org.json</groupId>
+                    <artifactId>json</artifactId>
+                    <version>20090211</version>
+            </dependency>
                                     
 	</dependencies>
 	<build>
@@ -138,7 +138,7 @@
 								<property name="dependency.jaxws.jar" value="${maven.dependency.org.apache.geronimo.specs.geronimo-jaxws_2.2_spec.jar.path}" />
 								<ant antfile="${basedir}/build.xml">
 									<property name="dependency.tomcat.zip" value="${dependency.tomcat.zip}" />
-									<target name="twonode" />
+									<target name="threenode" />
 									
 								</ant>
 							</tasks>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/serverNode2.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/serverNode2.xml b/juddi-tomcat/serverNode2.xml
index 58fc6a9..8f438a7 100644
--- a/juddi-tomcat/serverNode2.xml
+++ b/juddi-tomcat/serverNode2.xml
@@ -86,7 +86,7 @@
 			   />
     
     <!-- Define an AJP 1.3 Connector on port 8009 -->
-    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
+    <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
 
 
     <!-- An Engine represents the entry point (within Catalina) that processes

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/serverNode3.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/serverNode3.xml b/juddi-tomcat/serverNode3.xml
new file mode 100644
index 0000000..257bc21
--- /dev/null
+++ b/juddi-tomcat/serverNode3.xml
@@ -0,0 +1,145 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!-- Note:  A "Server" is not itself a "Container", so you may not
+     define subcomponents such as "Valves" at this level.
+     Documentation at /docs/config/server.html
+ -->
+<Server port="10005" shutdown="SHUTDOWN">
+
+  <!--APR library loader. Documentation at /docs/apr.html -->
+  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+  <Listener className="org.apache.catalina.core.JasperListener" />
+  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
+  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
+  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+
+  <!-- Global JNDI resources
+       Documentation at /docs/jndi-resources-howto.html
+  -->
+  <GlobalNamingResources>
+    <!-- Editable user database that can also be used by
+         UserDatabaseRealm to authenticate users
+    -->
+    <Resource name="UserDatabase" auth="Container"
+              type="org.apache.catalina.UserDatabase"
+              description="User database that can be updated and saved"
+              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+              pathname="conf/tomcat-users.xml" />
+  </GlobalNamingResources>
+
+  <!-- A "Service" is a collection of one or more "Connectors" that share
+       a single "Container" Note:  A "Service" is not itself a "Container", 
+       so you may not define subcomponents such as "Valves" at this level.
+       Documentation at /docs/config/service.html
+   -->
+  <Service name="Catalina">
+  
+    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
+    <!--
+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
+        maxThreads="150" minSpareThreads="4"/>
+    -->
+    
+    
+    <!-- A "Connector" represents an endpoint by which requests are received
+         and responses are returned. Documentation at :
+         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
+         Java AJP  Connector: /docs/config/ajp.html
+         APR (HTTP/AJP) Connector: /docs/apr.html
+         Define a non-SSL HTTP/1.1 Connector on port 8080
+    -->
+    <Connector port="10080" protocol="HTTP/1.1" 
+               connectionTimeout="20000" 
+               redirectPort="10443" />
+    <!-- A "Connector" using the shared thread pool-->
+    <!--
+    <Connector executor="tomcatThreadPool"
+               port="8080" protocol="HTTP/1.1" 
+               connectionTimeout="20000" 
+               redirectPort="8443" />
+    -->           
+    <!-- Define a SSL HTTP/1.1 Connector on port 8443
+         This connector uses the JSSE configuration, when using APR, the 
+         connector should be using the OpenSSL style configuration
+         described in the APR documentation -->
+    
+    <Connector port="10443" protocol="HTTP/1.1" SSLEnabled="true"
+               maxThreads="150" scheme="https" secure="true"
+               clientAuth="false" sslProtocol="TLS" 
+			   keystoreFile="conf/keystore.jks" keystorePass="password"
+			   />
+    
+    <!-- Define an AJP 1.3 Connector on port 8009 -->
+    <Connector port="10009" protocol="AJP/1.3" redirectPort="10443" />
+
+
+    <!-- An Engine represents the entry point (within Catalina) that processes
+         every request.  The Engine implementation for Tomcat stand alone
+         analyzes the HTTP headers included with the request, and passes them
+         on to the appropriate Host (virtual host).
+         Documentation at /docs/config/engine.html -->
+
+    <!-- You should set jvmRoute to support load-balancing via AJP ie :
+    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">         
+    --> 
+    <Engine name="Catalina" defaultHost="localhost">
+
+      <!--For clustering, please take a look at documentation at:
+          /docs/cluster-howto.html  (simple how to)
+          /docs/config/cluster.html (reference documentation) -->
+      <!--
+      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
+      -->        
+
+      <!-- The request dumper valve dumps useful debugging information about
+           the request and response data received and sent by Tomcat.
+           Documentation at: /docs/config/valve.html -->
+      <!--
+      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
+      -->
+
+      <!-- This Realm uses the UserDatabase configured in the global JNDI
+           resources under the key "UserDatabase".  Any edits
+           that are performed against this UserDatabase are immediately
+           available for use by the Realm.  -->
+      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+             resourceName="UserDatabase"/>
+
+      <!-- Define the default virtual host
+           Note: XML Schema validation will not work with Xerces 2.2.
+       -->
+      <Host name="localhost"  appBase="webapps"
+            unpackWARs="true" autoDeploy="true"
+            xmlValidation="false" xmlNamespaceAware="false">
+
+        <!-- SingleSignOn valve, share authentication between web applications
+             Documentation at: /docs/config/valve.html -->
+        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
+
+        <!-- Access log processes all example.
+             Documentation at: /docs/config/valve.html -->
+        <!--
+        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
+               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
+        -->
+
+      </Host>
+    </Engine>
+  </Service>
+</Server>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/uddiNode3.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/uddiNode3.xml b/juddi-tomcat/uddiNode3.xml
new file mode 100644
index 0000000..c8287ed
--- /dev/null
+++ b/juddi-tomcat/uddiNode3.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 
+/*
+ * Copyright 2001-2008 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.
+ */
+ -->
+<!-- 
+This config is for the juddi-gui.
+
+It currently does not use the ValueSet, jUDDI, Replication, or REST APIs
+-->
+<uddi>
+    <reloadDelay>5000</reloadDelay>
+    <client name="juddigui">
+        <nodes>
+            <node>
+                <!-- required 'default' node -->
+                <name>default</name> 
+                <description>Main UDDI Node</description>
+                <!-- JAX-WS Transport -->
+                <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
+                <custodyTransferUrl>http://localhost:10080/juddiv3/services/custody-transfer</custodyTransferUrl>
+                <inquiryUrl>http://localhost:10080/juddiv3/services/inquiry</inquiryUrl>
+                <publishUrl>http://localhost:10080/juddiv3/services/publish</publishUrl>
+                <securityUrl>http://localhost:10080/juddiv3/services/security</securityUrl>
+                <subscriptionUrl>http://localhost:10080/juddiv3/services/subscription</subscriptionUrl>
+            </node>
+             <node>
+                <name>default-ssl</name> 
+                <description>Main UDDI Node using SSL</description>
+                <!-- JAX-WS Transport -->
+                <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
+                <custodyTransferUrl>http://localhost:10443/juddiv3/services/custody-transfer</custodyTransferUrl>
+                <inquiryUrl>https://localhost:10443/juddiv3/services/inquiry</inquiryUrl>
+                <publishUrl>https://localhost:10443/juddiv3/services/publish</publishUrl>
+                <securityUrl>https://localhost:10443/juddiv3/services/security</securityUrl>
+                <subscriptionUrl>https://localhost:10443/juddiv3/services/subscription</subscriptionUrl>
+            </node>
+            <node>
+                <name>jboss7</name> 
+                <description>Main UDDI node running on Jboss EAP6 or AS7</description>
+                <!-- 
+                Jboss users, note that the url is typically different, here's an example for Jboss EAP 6.x-->
+                <custodyTransferUrl>http://localhost:8080/juddiv3/UDDICustodyTransferService</custodyTransferUrl>
+                <inquiryUrl>http://localhost:8080/juddiv3/UDDIInquiryService</inquiryUrl>
+                <publishUrl>http://localhost:8080/juddiv3/UDDIPublicationService</publishUrl>
+                <securityUrl>http://localhost:8080/juddiv3/UDDISecurityService</securityUrl>
+                <subscriptionUrl>http://localhost:8080/juddiv3/UDDISubscriptionService</subscriptionUrl>
+                <subscriptionListenerUrl>http://localhost:8080/juddiv3/UDDISubscriptionListenerService</subscriptionListenerUrl>
+            </node>
+             <node>
+                <name>jboss7-ssl</name> 
+                <description>Main UDDI node running on Jboss EAP6 or AS7</description>
+                <!-- 
+                Jboss users, note that the url is typically different, here's an example for Jboss EAP 6.x-->
+                <custodyTransferUrl>https://localhost:8443/juddiv3/UDDICustodyTransferService</custodyTransferUrl>
+                <inquiryUrl>https://localhost:8443/juddiv3/UDDIInquiryService</inquiryUrl>
+                <publishUrl>https://localhost:8443/juddiv3/UDDIPublicationService</publishUrl>
+                <securityUrl>https://localhost:8443/juddiv3/UDDISecurityService</securityUrl>
+                <subscriptionUrl>https://localhost:8443/juddiv3/UDDISubscriptionService</subscriptionUrl>
+            </node>
+        </nodes>
+		<signature>
+			<!-- signing stuff, is NOT used by juddi-gui -->
+			<signingKeyStorePath>(not used)</signingKeyStorePath>
+			<signingKeyStoreType>(not used)</signingKeyStoreType>
+			<signingKeyStoreFilePassword 
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">(not used)</signingKeyStoreFilePassword>
+			<signingKeyPassword
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">(not used)</signingKeyPassword>
+			<signingKeyAlias>(not used)</signingKeyAlias>
+                        
+			<canonicalizationMethod>http://www.w3.org/2001/10/xml-exc-c14n#</canonicalizationMethod>
+			<signatureMethod>http://www.w3.org/2000/09/xmldsig#rsa-sha1</signatureMethod>
+			<XML_DIGSIG_NS>http://www.w3.org/2000/09/xmldsig#</XML_DIGSIG_NS>
+			
+                        <!-- validation stuff 
+                        This part IS used by juddi-gui whenever someone views an entity that is signed
+                        -->
+			<!-- if this doesn't exist or is incorrect, the client will attempt to load  from system properties, then 
+                        from the standard jdk trust store
+                        generally, if defined, the working path is typically the bin folder of the container
+                        -->
+			<trustStorePath></trustStorePath>
+			<trustStoreType>JKS</trustStoreType>
+			<trustStorePassword
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor"></trustStorePassword>
+			
+			<checkTimestamps>true</checkTimestamps>
+			<checkTrust>true</checkTrust>
+			<checkRevocationCRL>true</checkRevocationCRL>
+			<keyInfoInclusionSubjectDN>false</keyInfoInclusionSubjectDN>
+			<keyInfoInclusionSerial>false</keyInfoInclusionSerial>
+			<keyInfoInclusionBase64PublicKey>true</keyInfoInclusionBase64PublicKey>
+			<digestMethod>http://www.w3.org/2000/09/xmldsig#sha1</digestMethod>
+		</signature>
+                <!-- not used by juddi-gui-->
+		<subscriptionCallbacks>
+			<keyDomain>(not used)</keyDomain>
+			<listenUrl>(not used)</listenUrl>
+			<autoRegisterBindingTemplate>false</autoRegisterBindingTemplate>
+			<autoRegisterBusinessServiceKey>(not used)</autoRegisterBusinessServiceKey>
+			<signatureBehavior>DoNothing</signatureBehavior>
+			<!--valid values are AbortIfSigned,Sign,DoNothing,SignOnlyIfParentIsntSigned, default is DoNothing-->
+		</subscriptionCallbacks>
+                <!-- juddi-gui, used in the Create, Import from Wadl/Wsdl -->
+		<XtoWsdl>
+			<IgnoreSSLErrors>false</IgnoreSSLErrors>
+		</XtoWsdl>
+                
+    </client>
+    
+    <!-- hi there!
+    this section is required by juddi-gui and is an extension of what the normal juddi-client does
+    it's not in the standard config schema.
+    
+    -->
+    <config>
+        
+        <props>
+            <!--#required. if this uddi client is connected to uddi services that use the auth token, then set to UDDI_AUTH
+            #if not, set authtype to HTTP-->
+            <authtype>UDDI_AUTH</authtype>
+            <automaticLogouts>
+                <!-- #enables automatic logout timer, defaults to false if not defined-->
+                <enabled>true</enabled>
+                <!--#defines the duration of time to wait for the automatic logout, defaults to 15min if not defined-->
+                <duration>900000</duration>
+            </automaticLogouts>
+            <!--#node, this is the node defined in uddi.xml that the jUDDI-GUI will use for connections-->
+            <node>default</node>
+            <!-- controls remote access to the settings/configuration page -->
+            <configLocalHostOnly>true</configLocalHostOnly>
+        </props>
+    </config>
+</uddi>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
----------------------------------------------------------------------
diff --git a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
index 233c6ac..9a472fd 100644
--- a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
+++ b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
@@ -19,6 +19,7 @@ package org.apache.juddi.adminconsole.hub;
 import java.io.InputStream;
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.math.BigInteger;
 import java.net.URL;
 import java.rmi.RemoteException;
 import java.util.ArrayList;
@@ -35,9 +36,12 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import javax.xml.bind.JAXB;
 import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.ws.BindingProvider;
@@ -105,6 +109,10 @@ import org.uddi.api_v3.GetAuthToken;
 import org.uddi.api_v3.GetBusinessDetail;
 import org.uddi.api_v3.Name;
 import org.uddi.api_v3.SaveBusiness;
+import org.uddi.repl_v3.ChangeRecordIDType;
+import org.uddi.repl_v3.ChangeRecords;
+import org.uddi.repl_v3.GetChangeRecords;
+import org.uddi.repl_v3.HighWaterMarkVectorType;
 import org.uddi.repl_v3.ReplicationConfiguration;
 import org.uddi.sub_v3.Subscription;
 import org.uddi.sub_v3.SubscriptionResultsList;
@@ -112,6 +120,8 @@ import org.uddi.subr_v3.NotifySubscriptionListener;
 
 import org.uddi.v3_service.DispositionReportFaultMessage;
 import org.uddi.v3_service.UDDISecurityPortType;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
 
 /**
  * UddiHub - The hub acts as a single point for managing browser to uddi
@@ -398,6 +408,8 @@ public class UddiAdminHub {
                                 return getEntityHistory(parameters);
                         } else if (action.equalsIgnoreCase("change_NodeID")) {
                                 return change_NodeID(parameters);
+                        } else if (action.equalsIgnoreCase("changeRecord")) {
+                                return getChangeRecord(parameters);
                         }
 
                 } catch (Exception ex) {
@@ -827,10 +839,11 @@ public class UddiAdminHub {
                         //this is going to break a few design rules.
                         String currentnode = configuration.getString(Property.JUDDI_NODE_ID);
                         String newnode = parameters.getParameter("change_NodeIDKey");
-                        if (newnode==null)
+                        if (newnode == null) {
                                 throw new Exception("The new node id was not specified");
+                        }
                         newnode = newnode.trim();
-                        newnode=newnode.toLowerCase();
+                        newnode = newnode.toLowerCase();
                         log.warn("AUDIT - Renaming Node ID from " + currentnode + " to " + newnode);
 
                         UDDIPublicationImpl pub = new UDDIPublicationImpl();
@@ -884,16 +897,15 @@ public class UddiAdminHub {
 
                         //rekey is_replaced_by references? nah
                         tx.commit();
-                        try{
+                        try {
                                 DeleteBusiness db = new DeleteBusiness();
                                 db.setAuthInfo(GetToken());
                                 db.getBusinessKey().add(currentnode);
                                 pub.deleteBusiness(db);
-                        }
-                        catch (Exception ex){
+                        } catch (Exception ex) {
                                 log.warn("Node id change error: ", ex);
                         }
-                        
+
                         //finally update the xml config and resave it
                         AppConfig.setJuddiProperty(Property.JUDDI_NODE_ID, newnode);
                         AppConfig.setJuddiProperty(Property.JUDDI_NODE_ROOT_BUSINESS, newnode);
@@ -909,6 +921,42 @@ public class UddiAdminHub {
                 }
         }
 
+        private String getChangeRecord(HttpServletRequest parameters) {
+                try {
+                        GetChangeRecords req = new GetChangeRecords();
+
+                        req.setRequestingNode(AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID));
+
+                        req.setResponseLimitCount(BigInteger.ONE);
+                        req.setChangesAlreadySeen(new HighWaterMarkVectorType());
+                        req.getChangesAlreadySeen().getHighWaterMark().add(
+                                new ChangeRecordIDType(parameters.getParameter("nodeid"),
+                                        Long.parseLong(parameters.getParameter("recordid"))));
+                        ChangeRecords changeRecords = new UDDIReplicationImpl().getChangeRecords(req);
+
+                        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+                        DocumentBuilder db = dbf.newDocumentBuilder();
+                        StringWriter sw = new StringWriter();
+                        JAXB.marshal(changeRecords, sw);
+                        InputSource is = new InputSource(new StringReader(sw.toString()));
+
+                        Transformer transformer = TransformerFactory.newInstance().newTransformer();
+                        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+                        //initialize StreamResult with File object to save to file
+                        StreamResult result = new StreamResult(new StringWriter());
+                        Document document = db.parse(is);
+                        DOMSource source = new DOMSource(document);
+                        transformer.transform(source, result);
+                        String xmlString = result.getWriter().toString();
+                        //System.out.println(xmlString);
+
+                        // JAXB.marshal(changeRecords, sw);
+                        return "<pre>"+StringEscapeUtils.escapeXml(xmlString) + "</pre>";
+                } catch (Exception ex) {
+                        return HandleException(ex);
+                }
+        }
+
         public enum AuthStyle {
 
                 /**

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
----------------------------------------------------------------------
diff --git a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
index 45f3381..8ffaee0 100644
--- a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
+++ b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
@@ -380,3 +380,5 @@ items.custodytransfer=Custody Transfer
 items.replication=Replication
 items.transport=Transport
 items.clientname=Client Name
+pages.admin.changes=Change Records
+pages.admin.changes.content=Browse through each change made to your registry

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
----------------------------------------------------------------------
diff --git a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
index 3807e3c..0ba7b2c 100644
--- a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
+++ b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
@@ -381,3 +381,5 @@ items.custodytransfer=Transferencia de Custodia
 items.replication=Replicaci\u00f3n
 items.transport=Transporte
 items.clientname=Nombre del Cliente
+pages.admin.changes=Registros de Cambio
+pages.admin.changes.content=Navegar a trav\u00e9s de cada cambio realizado en su registro\n


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


[4/6] juddi git commit: JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) record

Posted by al...@apache.org.
http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/JuddiAdminService.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/JuddiAdminService.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/JuddiAdminService.java
index 65f5863..69a1900 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/JuddiAdminService.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/JuddiAdminService.java
@@ -22,6 +22,8 @@ import javax.xml.bind.JAXB;
 import javax.xml.ws.BindingProvider;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.juddi.api_v3.DeleteNode;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
 import org.apache.juddi.api_v3.Node;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -43,6 +45,7 @@ import org.uddi.api_v3.PersonName;
 import org.uddi.api_v3.Phone;
 import org.uddi.repl_v3.ChangeRecordIDType;
 import org.uddi.repl_v3.CommunicationGraph;
+import org.uddi.repl_v3.CommunicationGraph.Edge;
 import org.uddi.repl_v3.Operator;
 import org.uddi.repl_v3.OperatorStatusType;
 import org.uddi.repl_v3.ReplicationConfiguration;
@@ -56,23 +59,25 @@ import org.uddi.v3_service.UDDISecurityPortType;
  */
 public class JuddiAdminService {
 
-        private static UDDISecurityPortType security = null;
-        private static UDDIPublicationPortType publish = null;
+      //  private static UDDISecurityPortType security = null;
+        //  private static UDDIPublicationPortType publish = null;
         static JUDDIApiPortType juddi = null;
-        static UDDIClerk clerk = null;
+        // static UDDIClerk clerk = null;
         static UDDIClient clerkManager = null;
 
-        public JuddiAdminService() {
+        public JuddiAdminService(UDDIClient client, Transport transport) {
                 try {
+                        clerkManager = client;
+                        if (transport==null)
                         // create a manager and read the config in the archive; 
                         // you can use your config file name
-                        clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        clerk = clerkManager.getClerk("default");
+                        // clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        //clerk = clerkManager.getClerk("default");
                         // The transport can be WS, inVM, RMI etc which is defined in the uddi.xml
-                        Transport transport = clerkManager.getTransport();
+                                transport = clerkManager.getTransport();
                         // Now you create a reference to the UDDI API
-                        security = transport.getUDDISecurityService();
-                        publish = transport.getUDDIPublishService();
+                        //security = transport.getUDDISecurityService();
+                        //publish = transport.getUDDIPublishService();
                         juddi = transport.getJUDDIApiService();
                 } catch (Exception e) {
                         e.printStackTrace();
@@ -187,17 +192,8 @@ public class JuddiAdminService {
 
         }
 
-        void viewReplicationConfig(String authtoken) throws Exception {
-                List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
-                System.out.println();
-                System.out.println("Select a node (from *this config)");
-                for (int i = 0; i < uddiNodeList.size(); i++) {
-                        System.out.print(i + 1);
-                        System.out.println(") " + uddiNodeList.get(i).getName() + uddiNodeList.get(i).getDescription());
-                }
-                System.out.println("Node #: ");
-                int index = Integer.parseInt(System.console().readLine()) - 1;
-                String node = uddiNodeList.get(index).getName();
+        void viewReplicationConfig(String authtoken, String node) throws Exception {
+                
                 Transport transport = clerkManager.getTransport(node);
 
                 JUDDIApiPortType juddiApiService = transport.getJUDDIApiService();
@@ -454,8 +450,9 @@ public class JuddiAdminService {
                 return pn;
         }
 
-        void autoMagic() throws Exception {
+        void autoMagic123() throws Exception {
 
+                //1 > 2 >3 >1
                 List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
 
                 Transport transport = clerkManager.getTransport("default");
@@ -494,8 +491,19 @@ public class JuddiAdminService {
                 op.getContact().get(0).getPersonName().add(new PersonName("mary", "en"));
                 op.getContact().get(0).setUseType("admin");
                 replicationNodes.getOperator().add(op);
+                op = new Operator();
+
+                op.setOperatorNodeID("uddi:yet.another.juddi.apache.org:node3");
+                op.setSoapReplicationURL("http://localhost:10080/juddiv3/services/replication");
+                op.setOperatorStatus(OperatorStatusType.NORMAL);
+                op.getContact().add(new Contact());
+                op.getContact().get(0).getPersonName().add(new PersonName("mary", "en"));
+                op.getContact().get(0).setUseType("admin");
+                replicationNodes.getOperator().add(op);
+
                 replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2");
                 replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1");
+                replicationNodes.getCommunicationGraph().getNode().add("uddi:yet.another.juddi.apache.org:node3");
                 replicationNodes.setSerialNumber(0L);
                 replicationNodes.setTimeOfConfigurationUpdate("");
                 replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE);
@@ -508,19 +516,125 @@ public class JuddiAdminService {
 
                 JAXB.marshal(replicationNodes, System.out);
                 juddiApiService.setReplicationNodes(authtoken, replicationNodes);
-                
+
                 transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2");
-                 authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+                authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+
+                juddiApiService = transport.getJUDDIApiService();
+                juddiApiService.setReplicationNodes(authtoken, replicationNodes);
+
+                transport = clerkManager.getTransport("uddi:yet.another.juddi.apache.org:node3");
+                authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
 
                 juddiApiService = transport.getJUDDIApiService();
                 juddiApiService.setReplicationNodes(authtoken, replicationNodes);
-             
 
         }
 
-        void printStatus() throws Exception{
-                
-                
+        void autoMagicDirected() throws Exception {
+
+                //1 > 2 >3 >1
+                List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+
+                Transport transport = clerkManager.getTransport("default");
+                String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+
+                JUDDIApiPortType juddiApiService = transport.getJUDDIApiService();
+                System.out.println("fetching...");
+
+                ReplicationConfiguration replicationNodes = null;
+                try {
+                        replicationNodes = juddiApiService.getReplicationNodes(authtoken);
+                } catch (Exception ex) {
+                        System.out.println("Error getting replication config");
+                        ex.printStackTrace();
+                        replicationNodes = new ReplicationConfiguration();
+
+                }
+                if (replicationNodes.getCommunicationGraph() == null) {
+                        replicationNodes.setCommunicationGraph(new CommunicationGraph());
+                }
+                Operator op = new Operator();
+                op.setOperatorNodeID("uddi:juddi.apache.org:node1");
+                op.setSoapReplicationURL("http://localhost:8080/juddiv3/services/replication");
+                op.setOperatorStatus(OperatorStatusType.NORMAL);
+                op.getContact().add(new Contact());
+                op.getContact().get(0).getPersonName().add(new PersonName("bob", "en"));
+                op.getContact().get(0).setUseType("admin");
+                replicationNodes.getOperator().clear();
+                replicationNodes.getOperator().add(op);
+
+                op = new Operator();
+                op.setOperatorNodeID("uddi:another.juddi.apache.org:node2");
+                op.setSoapReplicationURL("http://localhost:9080/juddiv3/services/replication");
+                op.setOperatorStatus(OperatorStatusType.NORMAL);
+                op.getContact().add(new Contact());
+                op.getContact().get(0).getPersonName().add(new PersonName("mary", "en"));
+                op.getContact().get(0).setUseType("admin");
+                replicationNodes.getOperator().add(op);
+                op = new Operator();
+
+                op.setOperatorNodeID("uddi:yet.another.juddi.apache.org:node3");
+                op.setSoapReplicationURL("http://localhost:10080/juddiv3/services/replication");
+                op.setOperatorStatus(OperatorStatusType.NORMAL);
+                op.getContact().add(new Contact());
+                op.getContact().get(0).getPersonName().add(new PersonName("mary", "en"));
+                op.getContact().get(0).setUseType("admin");
+                replicationNodes.getOperator().add(op);
+                replicationNodes.getCommunicationGraph().getNode().clear();
+                replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2");
+                replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1");
+                replicationNodes.getCommunicationGraph().getNode().add("uddi:yet.another.juddi.apache.org:node3");
+                replicationNodes.getCommunicationGraph().getEdge().clear();
+                Edge e = new CommunicationGraph.Edge();
+                e.setMessageSender("uddi:juddi.apache.org:node1");
+                e.setMessageReceiver("uddi:another.juddi.apache.org:node2");
+                replicationNodes.getCommunicationGraph().getEdge().add(e);
+
+                e = new CommunicationGraph.Edge();
+                e.setMessageSender("uddi:another.juddi.apache.org:node2");
+                e.setMessageReceiver("uddi:yet.another.juddi.apache.org:node3");
+                replicationNodes.getCommunicationGraph().getEdge().add(e);
+
+                e = new CommunicationGraph.Edge();
+                e.setMessageSender("uddi:yet.another.juddi.apache.org:node3");
+                e.setMessageReceiver("uddi:juddi.apache.org:node1");
+                replicationNodes.getCommunicationGraph().getEdge().add(e);
+
+                replicationNodes.setSerialNumber(0L);
+                replicationNodes.setTimeOfConfigurationUpdate("");
+                replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE);
+                replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE);
+
+                if (replicationNodes.getRegistryContact().getContact() == null) {
+                        replicationNodes.getRegistryContact().setContact(new Contact());
+                        replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null));
+                }
+
+                JAXB.marshal(replicationNodes, System.out);
+
+                juddiApiService.setReplicationNodes(authtoken, replicationNodes);
+                System.out.println("Saved to node1");
+                TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken));
+
+                transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2");
+                authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+                juddiApiService = transport.getJUDDIApiService();
+                juddiApiService.setReplicationNodes(authtoken, replicationNodes);
+                System.out.println("Saved to node2");
+                TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken));
+
+                transport = clerkManager.getTransport("uddi:yet.another.juddi.apache.org:node3");
+                authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+                juddiApiService = transport.getJUDDIApiService();
+                juddiApiService.setReplicationNodes(authtoken, replicationNodes);
+                System.out.println("Saved to node3");
+                TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken));
+
+        }
+
+        void autoMagic() throws Exception {
+
                 List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
 
                 Transport transport = clerkManager.getTransport("default");
@@ -538,17 +652,152 @@ public class JuddiAdminService {
                         replicationNodes = new ReplicationConfiguration();
 
                 }
+                if (replicationNodes.getCommunicationGraph() == null) {
+                        replicationNodes.setCommunicationGraph(new CommunicationGraph());
+                }
+                Operator op = new Operator();
+                op.setOperatorNodeID("uddi:juddi.apache.org:node1");
+                op.setSoapReplicationURL("http://localhost:8080/juddiv3/services/replication");
+                op.setOperatorStatus(OperatorStatusType.NORMAL);
+                op.getContact().add(new Contact());
+                op.getContact().get(0).getPersonName().add(new PersonName("bob", "en"));
+                op.getContact().get(0).setUseType("admin");
+                replicationNodes.getOperator().clear();
+                replicationNodes.getOperator().add(op);
+
+                op = new Operator();
+                op.setOperatorNodeID("uddi:another.juddi.apache.org:node2");
+                op.setSoapReplicationURL("http://localhost:9080/juddiv3/services/replication");
+                op.setOperatorStatus(OperatorStatusType.NORMAL);
+                op.getContact().add(new Contact());
+                op.getContact().get(0).getPersonName().add(new PersonName("mary", "en"));
+                op.getContact().get(0).setUseType("admin");
+                replicationNodes.getOperator().add(op);
+                replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2");
+                replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1");
+                replicationNodes.setSerialNumber(0L);
+                replicationNodes.setTimeOfConfigurationUpdate("");
+                replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE);
+                replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE);
+
+                if (replicationNodes.getRegistryContact().getContact() == null) {
+                        replicationNodes.getRegistryContact().setContact(new Contact());
+                        replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null));
+                }
+
+                JAXB.marshal(replicationNodes, System.out);
+                juddiApiService.setReplicationNodes(authtoken, replicationNodes);
+
+                transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2");
+                authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+
+                juddiApiService = transport.getJUDDIApiService();
+                juddiApiService.setReplicationNodes(authtoken, replicationNodes);
+
+        }
+
+        void printStatus(Transport transport, String authtoken) throws Exception {
+
+                JUDDIApiPortType juddiApiService = transport.getJUDDIApiService();
+                System.out.println("fetching...");
+
+                ReplicationConfiguration replicationNodes = null;
+                try {
+                        replicationNodes = juddiApiService.getReplicationNodes(authtoken);
+                } catch (Exception ex) {
+                        System.out.println("Error getting replication config");
+                        ex.printStackTrace();
+                        replicationNodes = new ReplicationConfiguration();
+
+                }
                 UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
-                
-                for (Operator o: replicationNodes.getOperator()){
+
+                for (Operator o : replicationNodes.getOperator()) {
                         System.out.println("*******************\n\rstats for node " + o.getOperatorNodeID());
-                        ((BindingProvider)uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, o.getSoapReplicationURL());
-                        
+                        ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, o.getSoapReplicationURL());
+
                         List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks();
-                        for (ChangeRecordIDType cr : highWaterMarks){
+                        for (ChangeRecordIDType cr : highWaterMarks) {
                                 JAXB.marshal(cr, System.out);
                         }
                 }
-                
+        }
+
+        void printStatus() throws Exception {
+
+                //List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+
+                Transport transport = clerkManager.getTransport("default");
+                String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo();
+
+                JUDDIApiPortType juddiApiService = transport.getJUDDIApiService();
+                System.out.println("fetching...");
+
+                ReplicationConfiguration replicationNodes = null;
+                try {
+                        replicationNodes = juddiApiService.getReplicationNodes(authtoken);
+                } catch (Exception ex) {
+                        System.out.println("Error getting replication config");
+                        ex.printStackTrace();
+                        replicationNodes = new ReplicationConfiguration();
+
+                }
+                UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
+
+                for (Operator o : replicationNodes.getOperator()) {
+                        System.out.println("*******************\n\rstats for node " + o.getOperatorNodeID());
+                        ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, o.getSoapReplicationURL());
+
+                        List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks();
+                        for (ChangeRecordIDType cr : highWaterMarks) {
+                                JAXB.marshal(cr, System.out);
+                        }
+                }
+
+        }
+
+        private void TestEquals(ReplicationConfiguration setter, ReplicationConfiguration getter) {
+                if (getter == null) {
+                        l("null getter");
+                        return;
+                }
+                if (setter == null) {
+                        l("null setter");
+                        return;
+                }
+                if (getter.getOperator().size() != setter.getOperator().size()) {
+                        l("operator size mismatch");
+                        return;
+                }
+                if (getter.getCommunicationGraph().getNode().size() != setter.getCommunicationGraph().getNode().size()) {
+                        l("comm/node size mismatch");
+                        return;
+                }
+                if (getter.getCommunicationGraph().getEdge().size() != setter.getCommunicationGraph().getEdge().size()) {
+                        l("comm/node size mismatch");
+                        return;
+                }
+
+        }
+
+        private void l(String msg) {
+                System.out.println(msg);
+        }
+
+        void dumpFailedReplicationRecords(String authtoken) throws Exception {
+                GetFailedReplicationChangeRecordsMessageRequest req = new GetFailedReplicationChangeRecordsMessageRequest();
+                req.setAuthInfo(authtoken);
+                req.setMaxRecords(20);
+                req.setOffset(0);
+                GetFailedReplicationChangeRecordsMessageResponse failedReplicationChangeRecords = juddi.getFailedReplicationChangeRecords(req);
+                while (failedReplicationChangeRecords != null
+                        && failedReplicationChangeRecords.getChangeRecords() != null
+                        && !failedReplicationChangeRecords.getChangeRecords().getChangeRecord().isEmpty()) {
+                        for (int i = 0; i < failedReplicationChangeRecords.getChangeRecords().getChangeRecord().size(); i++) {
+                                JAXB.marshal(failedReplicationChangeRecords.getChangeRecords().getChangeRecord().get(i), System.out);
+                        }
+                        req.setOffset(req.getOffset() + failedReplicationChangeRecords.getChangeRecords().getChangeRecord().size());
+                        failedReplicationChangeRecords = juddi.getFailedReplicationChangeRecords(req);
+                }
         }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiCreatebulk.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiCreatebulk.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiCreatebulk.java
index 7825e79..cf46f3a 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiCreatebulk.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiCreatebulk.java
@@ -40,13 +40,14 @@ public class UddiCreatebulk {
 
         private static UDDISecurityPortType security = null;
         private static UDDIPublicationPortType publish = null;
-
+        String curretNode = null;
         public UddiCreatebulk(String node) {
                 try {
                         // create a manager and read the config in the archive; 
                         // you can use your config file name
                         UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
                         Transport transport = clerkManager.getTransport(node);
+                        curretNode=node;
                         // Now you create a reference to the UDDI API
                         security = transport.getUDDISecurityService();
                         publish = transport.getUDDIPublishService();
@@ -54,6 +55,16 @@ public class UddiCreatebulk {
                         e.printStackTrace();
                 }
         }
+        
+        public UddiCreatebulk(Transport transport, boolean notused, String node) {
+                try {
+                       curretNode=node;
+                        security = transport.getUDDISecurityService();
+                        publish = transport.getUDDIPublishService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
 
         public void publishBusiness(String token, int businesses, int servicesPerBusiness) {
                 try {
@@ -80,7 +91,7 @@ public class UddiCreatebulk {
                                 BusinessEntity myBusEntity = new BusinessEntity();
                                 Name myBusName = new Name();
                                 myBusName.setLang("en");
-                                myBusName.setValue("My Business " + i + " " + xcal.toString() + " " + textgen.getWords(5, 2) );
+                                myBusName.setValue("My Business " +curretNode +" " + i + " " + xcal.toString() + " " + textgen.getWords(5, 2) );
                                 myBusEntity.getDescription().add(new Description( textgen.getWords(10, 2), null));
                                 myBusEntity.getName().add(myBusName);
 
@@ -98,7 +109,7 @@ public class UddiCreatebulk {
                                         myService.setBusinessKey(myBusKey);
                                         Name myServName = new Name();
                                         myServName.setLang("en");
-                                        myServName.setValue("My Service " + i + " " + k + " " + xcal.toString()+ " " + textgen.getWords(5, 2) );
+                                        myServName.setValue("My Service " +curretNode+" "+ i + " " + k + " " + xcal.toString()+ " " + textgen.getWords(5, 2) );
                                         myService.getName().add(myServName);
                                         myService.getDescription().add(new Description( textgen.getWords(10, 2), null));
                                         

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureBusiness.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureBusiness.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureBusiness.java
index aac42d9..4ec5b6d 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureBusiness.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureBusiness.java
@@ -56,6 +56,18 @@ public class UddiDigitalSignatureBusiness {
                         e.printStackTrace();
                 }
         }
+        
+        public UddiDigitalSignatureBusiness(Transport transport) {
+                try {
+                       
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        inquiry = transport.getUDDIInquiryService();
+                        publish = transport.getUDDIPublishService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
 
         /**
          * Main entry point

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiReplication.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiReplication.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiReplication.java
index ea6fc52..4448df5 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiReplication.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiReplication.java
@@ -16,13 +16,14 @@
 package org.apache.juddi.samples;
 
 import java.math.BigInteger;
-import java.rmi.RemoteException;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.xml.bind.JAXB;
 import javax.xml.ws.BindingProvider;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.juddi.v3.client.UDDIService;
+import org.apache.juddi.v3.client.config.UDDIClient;
 import org.uddi.repl_v3.ChangeRecord;
 import org.uddi.repl_v3.ChangeRecordIDType;
 import org.uddi.repl_v3.ChangeRecords;
@@ -37,13 +38,16 @@ import org.uddi.v3_service.UDDIReplicationPortType;
  */
 class UddiReplication {
 
-        public UddiReplication() {
+        public UddiReplication(UDDIClient client, String nodename) throws ConfigurationException {
+
+                 uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
+                ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, client.getClientConfig().getUDDINode(nodename).getReplicationUrl());
         }
 
-        String DoPing(String key2) {
+        UDDIReplicationPortType uddiReplicationPort = null;
+
+        String DoPing() {
                 try {
-                        UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
-                        ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, key2);
                         String doPing = uddiReplicationPort.doPing(new DoPing());
                         System.out.println("Ping Success, remote node's id is " + doPing);
                         return doPing;
@@ -53,31 +57,26 @@ class UddiReplication {
                 return null;
         }
 
-        void GetHighWatermarks(String key2) {
+        void GetHighWatermarks() {
                 try {
-                        UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
-                        ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, key2);
-                        List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks();
+                           List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks();
                         System.out.println("Success....");
                         System.out.println("Node, USN");
                         for (int i = 0; i < highWaterMarks.size(); i++) {
                                 System.out.println(
-                                     highWaterMarks.get(i).getNodeID() + ", "
-                                     + highWaterMarks.get(i).getOriginatingUSN());
+                                        highWaterMarks.get(i).getNodeID() + ", "
+                                        + highWaterMarks.get(i).getOriginatingUSN());
                         }
                 } catch (Exception ex) {
                         Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
                 }
         }
 
-        void GetChangeRecords(String key2, Long record, String sourcenode) {
+        void GetChangeRecords(Long record, String sourcenode) {
                 try {
-                        UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
                         HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();
-                        
-                        
-                        highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(DoPing(key2), record));
-                        ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, key2);
+
+                        highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(DoPing(), record));
                         GetChangeRecords req = new GetChangeRecords();
                         req.setRequestingNode(sourcenode);
                         req.setChangesAlreadySeen(highWaterMarkVectorType);
@@ -88,9 +87,9 @@ class UddiReplication {
                         System.out.println("Node, USN, type");
                         for (int i = 0; i < changeRecords.size(); i++) {
                                 System.out.println(
-                                     changeRecords.get(i).getChangeID().getNodeID() + ", "
-                                     + changeRecords.get(i).getChangeID().getOriginatingUSN() + ": "
-                                     + GetChangeType(changeRecords.get(i)));
+                                        changeRecords.get(i).getChangeID().getNodeID() + ", "
+                                        + changeRecords.get(i).getChangeID().getOriginatingUSN() + ": "
+                                        + GetChangeType(changeRecords.get(i)));
                                 JAXB.marshal(changeRecords.get(i), System.out);
                         }
                 } catch (Exception ex) {

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
index 38306ab..093a759 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
@@ -68,6 +68,24 @@ public class UddiSubscribe implements ISubscriptionCallback, Runnable {
                         e.printStackTrace();
                 }
         }
+        String nodename = "default";
+        public UddiSubscribe(UDDIClient client, String nodename, Transport transport) {
+                try {
+                        // create a manager and read the config in the archive; 
+                        // you can use your config file name
+                        //client = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        clerk = client.getClerk(nodename);
+                        this.nodename = nodename;
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        juddiApi = transport.getJUDDIApiService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
 
         public static void main(String args[]) throws Exception {
                 UddiSubscribe sp = new UddiSubscribe();
@@ -95,7 +113,7 @@ public class UddiSubscribe implements ISubscriptionCallback, Runnable {
                 System.out.println("Registered business keygen: " + register.getBusinessKey());
 
                 //start up our listener
-                BindingTemplate start = SubscriptionCallbackListener.start(client, "default");
+                BindingTemplate start = SubscriptionCallbackListener.start(client, nodename);
 
                 //register for callbacks
                 SubscriptionCallbackListener.registerCallback(this);
@@ -189,7 +207,7 @@ public class UddiSubscribe implements ISubscriptionCallback, Runnable {
 
                 System.in.read();
 
-                SubscriptionCallbackListener.stop(client, "default", start.getBindingKey());
+                SubscriptionCallbackListener.stop(client, nodename, start.getBindingKey());
                 clerk.unRegisterSubscription(subscriptionBiz.getSubscriptionKey());
                 clerk.unRegisterSubscription(subscriptionSvc.getSubscriptionKey());
                 clerk.unRegisterSubscription(subscriptionTM.getSubscriptionKey());

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
index 58f241f..0c14e5d 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeAssertionStatus.java
@@ -69,12 +69,26 @@ public class UddiSubscribeAssertionStatus implements ISubscriptionCallback, Runn
                 }
         }
 
+         public UddiSubscribeAssertionStatus(Transport transport) {
+                try {
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        juddiApi = transport.getJUDDIApiService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+         
         public static void main(String args[]) throws Exception {
                 UddiSubscribeAssertionStatus sp = new UddiSubscribeAssertionStatus();
-                sp.Fire();
+                sp.Fire("default");
         }
 
-        public void Fire() throws Exception {
+        public void Fire(String nodename) throws Exception {
 
                 TModel createKeyGenator = UDDIClerk.createKeyGenator("somebusiness", "A test key domain SubscriptionCallbackTest1", "SubscriptionCallbackTest1");
 
@@ -95,7 +109,7 @@ public class UddiSubscribeAssertionStatus implements ISubscriptionCallback, Runn
                 System.out.println("Registered business keygen: " + register.getBusinessKey());
 
                 //start up our listener
-                BindingTemplate start = SubscriptionCallbackListener.start(client, "default");
+                BindingTemplate start = SubscriptionCallbackListener.start(client, nodename);
 
                 //register for callbacks
                 SubscriptionCallbackListener.registerCallback(this);
@@ -118,7 +132,7 @@ public class UddiSubscribeAssertionStatus implements ISubscriptionCallback, Runn
                 
                         System.in.read();
                 
-                SubscriptionCallbackListener.stop(client, "default", start.getBindingKey());
+                SubscriptionCallbackListener.stop(client, nodename, start.getBindingKey());
                 clerk.unRegisterSubscription(subscriptionBiz.getSubscriptionKey());
 
                 clerk.unRegisterTModel(createKeyGenator.getTModelKey());

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeValidate.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeValidate.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeValidate.java
index 6192362..2d7a83f 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeValidate.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribeValidate.java
@@ -65,6 +65,20 @@ public class UddiSubscribeValidate {
                         e.printStackTrace();
                 }
         }
+        
+          public UddiSubscribeValidate(Transport transport) {
+                try {
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        juddiApi = transport.getJUDDIApiService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                        uddiSubscriptionListenerService = transport.getUDDISubscriptionListenerService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
 
         /**
          * gets subscription results synchronously

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscriptionManagement.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscriptionManagement.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscriptionManagement.java
index e303bef..27c3c5a 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscriptionManagement.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscriptionManagement.java
@@ -74,6 +74,19 @@ public class UddiSubscriptionManagement {
                         e.printStackTrace();
                 }
         }
+        
+         public UddiSubscriptionManagement(Transport transport) {
+                try {
+                       
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
 
         public static void main(String args[]) throws Exception {
                 UddiSubscriptionManagement sp = new UddiSubscriptionManagement();

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WadlImport.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WadlImport.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WadlImport.java
index 08be299..c53d45c 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WadlImport.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WadlImport.java
@@ -62,12 +62,14 @@ public class WadlImport {
         private static JUDDIApiPortType juddiApi = null;
         private static UDDIPublicationPortType publish = null;
 
-        public void Fire(String pathOrURL, String businessKey, String token) throws Exception {
+        public void Fire(String pathOrURL, String businessKey, String token, Transport transport) throws Exception {
 
+                if (transport == null) {
                 // create a manager and read the config in the archive; 
-                // you can use your config file name
-                UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                Transport transport = clerkManager.getTransport();
+                        // you can use your config file name
+                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        transport = clerkManager.getTransport();
+                }
                 // Now you create a reference to the UDDI API
                 security = transport.getUDDISecurityService();
                 publish = transport.getUDDIPublishService();
@@ -161,7 +163,7 @@ public class WadlImport {
 
                 System.out.println("here's our new service: " + servicePrinter.print(businessServices));
 
-                if (businessKey == null || businessKey.length()==0) {
+                if (businessKey == null || businessKey.length() == 0) {
                         BusinessEntity be = new BusinessEntity();
                         be.setBusinessKey(businessServices.getBusinessKey());
                         be.getName().add(new Name());
@@ -189,7 +191,7 @@ public class WadlImport {
 
         public static void main(String[] args) throws Exception {
 
-                new WadlImport().Fire("http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/resources/wadl/bookstoreImportResource.wadl", null, null);
+                new WadlImport().Fire("http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/resources/wadl/bookstoreImportResource.wadl", null, null, null);
 
         }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WsdlImport.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WsdlImport.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WsdlImport.java
index 570ed70..2e21f33 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WsdlImport.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/WsdlImport.java
@@ -64,15 +64,17 @@ public class WsdlImport {
         private static UDDIPublicationPortType publish = null;
 
         public static void main(String[] args) throws Exception {
-                new WsdlImport().Fire("http://svn.apache.org/repos/asf/juddi/trunk/uddi-ws/src/main/resources/juddi_api_v1.wsdl", null, null);
+                new WsdlImport().Fire("http://svn.apache.org/repos/asf/juddi/trunk/uddi-ws/src/main/resources/juddi_api_v1.wsdl", null, null, null);
         }
 
-        public void Fire(String pathOrURL, String businessKey, String token) throws Exception {
+        public void Fire(String pathOrURL, String businessKey, String token, Transport transport) throws Exception {
 
+                if (transport == null) {
                 // create a manager and read the config in the archive; 
-                // you can use your config file name
-                UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                Transport transport = clerkManager.getTransport();
+                        // you can use your config file name
+                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        transport = clerkManager.getTransport();
+                }
                 // Now you create a reference to the UDDI API
                 security = transport.getUDDISecurityService();
                 publish = transport.getUDDIPublishService();

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml b/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml
index 2e681ca..0dd7ed7 100644
--- a/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml
+++ b/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml
@@ -70,6 +70,32 @@
                                 <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
                                 <replicationUrl>http://${serverName}:${serverPort}/juddiv3/services/replication</replicationUrl>
                         </node>
+                        
+                        <node>
+                                <!-- required 'default' node -->
+                                <name>uddi:yet.another.juddi.apache.org:node3</name> 
+                                <properties>
+                                        <property name="serverName" value="localhost"/>
+                                        <property name="serverPort" value="10080"/>
+                                        <!-- for UDDI nodes that use HTTP u/p, using the following 
+                                        <property name="basicAuthUsername" value="root" />
+                                        <property name="basicAuthPassword" value="password" />
+                                        <property name="basicAuthPasswordIsEncrypted" value="false" />
+                                        <property name="basicAuthPasswordCryptoProvider" value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />-->
+                                </properties>
+                                <description>juddi node on 10080</description>
+                                <!-- JAX-WS Transport -->
+                                <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
+                                <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer</custodyTransferUrl>
+                                <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl>
+                                <inquiryRESTUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryRest</inquiryRESTUrl>
+                                <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl>
+                                <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl>
+                                <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
+                                <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
+                                <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
+                                <replicationUrl>http://${serverName}:${serverPort}/juddiv3/services/replication</replicationUrl>
+                        </node>
                 </nodes>
                 <clerks registerOnStartup="false">
                         <clerk name="default" node="default" publisher="uddi" password="uddi"  isPasswordEncrypted="false" cryptoProvider=""/>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/build.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/build.xml b/juddi-tomcat/build.xml
index 823b894..4f7b3ae 100644
--- a/juddi-tomcat/build.xml
+++ b/juddi-tomcat/build.xml
@@ -128,7 +128,77 @@
 			</fileset>
 		</chmod>
 	</target>
+        
+        
+        <!-- node 3 -->
+        
+        <property name="lib3.dir" value="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/lib"/>
+	<property name="webapps3.dir" value="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/webapps"/>
+	<property name="conf3.dir" value="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/conf"/>
+	<property name="endorsed3.dir" value="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/endorsed"/>
+
+	<target name="unzip-tomcat3">
+		<mkdir dir="${basedir}/target/tomcat3"/>
+		<unzip dest="${basedir}/target/tomcat3" src="${dependency.tomcat.zip}"/>
+		<unzip dest="${webapps3.dir}/juddiv3" src="${dependency.juddiv3.war}"/>
+		<unzip dest="${webapps3.dir}/juddi-gui" src="${dependency.juddi-gui.war}"/>
+	</target>
+	
+	<target name="copy-resources3" depends="unzip-tomcat3">
+		<!-- JUDDI-894 -->
+		<move file="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/webapps/ROOT/index.html" tofile="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/webapps/ROOT/index-tomcat.html" overwrite="true"/>
+		<copy file="${basedir}/index.html" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/webapps/ROOT" overwrite="true"/>
+
+		<copy file="${basedir}/catalina.sh" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		<copy file="${basedir}/catalina.bat" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		<copy file="${basedir}/truststore.jks" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		<copy file="${basedir}/truststore.jks" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/" overwrite="true"/>
+		
+		<copy file="${basedir}/juddi-cryptor.bat" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		<copy file="${basedir}/juddi-md5.bat" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		<copy file="${basedir}/juddi-cryptor.sh" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		<copy file="${basedir}/juddi-md5.sh" todir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin" overwrite="true"/>
+		
+		
+		<copy file="${basedir}/juddiv3Node3.xml" tofile="${webapps3.dir}/juddiv3/WEB-INF/classes/juddiv3.xml" overwrite="true"/>
+		<copy file="${basedir}/juddi_install_data_node3/root_BusinessEntity.xml" todir="${webapps3.dir}/juddiv3/WEB-INF/classes/juddi_custom_install_data/" overwrite="true"/>
+		<copy file="${basedir}/juddi_install_data_node3/root_Publisher.xml" todir="${webapps3.dir}/juddiv3/WEB-INF/classes/juddi_custom_install_data/" overwrite="true"/>
+		<copy file="${basedir}/juddi_install_data_node3/root_tModelKeyGen.xml" todir="${webapps3.dir}/juddiv3/WEB-INF/classes/juddi_custom_install_data/" overwrite="true"/>
+		<copy file="${basedir}/juddi_install_data_node3/UDDI_Publisher.xml" todir="${webapps3.dir}/juddiv3/WEB-INF/classes/juddi_custom_install_data/" overwrite="true"/>
+		<copy file="${basedir}/juddi_install_data_node3/UDDI_tModels.xml" todir="${webapps3.dir}/juddiv3/WEB-INF/classes/juddi_custom_install_data/" overwrite="true"/>
+
+		
+		<copy file="${basedir}/uddiNode3.xml" tofile="${webapps3.dir}/juddi-gui/WEB-INF/classes/META-INF/uddi.xml" overwrite="true"/>
+		<copy file="${basedir}/serverNode3.xml" tofile="${conf3.dir}/server.xml" overwrite="true"/>
+		
+		
+		
+        <copy file="${basedir}/tomcat-users.xml" todir="${conf3.dir}" overwrite="true"/>
+		<copy file="${basedir}/context.xml" todir="${webapps3.dir}/juddiv3/META-INF" overwrite="true"/>
+		<copy file="${basedir}/keystore.jks" todir="${conf3.dir}" overwrite="true"/>
+		
+ 		<copy file="${dependency.mysql.jar}" todir="${lib3.dir}"/>
+		<copy file="${dependency.postgres.jar}" todir="${lib3.dir}"/>
+		<copy file="${dependency.log4j.jar}" todir="${lib3.dir}"/>
+		<copy file="${dependency.derby.jar}" todir="${lib3.dir}"/>
+		<copy file="${dependency.commons-discovery.jar}" todir="${lib3.dir}"/>
+		<copy file="${dependency.jaxws.jar}" todir="${endorsed3.dir}"/>
+	</target>
+	
+	<target name="package-tomcat3" depends="copy-resources3">
+		<chmod perm="ugo+x">
+			<fileset dir="${basedir}/target/tomcat3/apache-tomcat-${apache.tomcat.version}/bin">
+				<include name="*.sh"/>
+			</fileset>
+		</chmod>
+	</target>
+
+
+
 
 	<target name="twonode" depends="package-tomcat,package-tomcat2"/>
+        
+        
+        <target name="threenode" depends="package-tomcat,package-tomcat2,package-tomcat3"/>
 
 </project>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddi_install_data_node2/root_BusinessEntity.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddi_install_data_node2/root_BusinessEntity.xml b/juddi-tomcat/juddi_install_data_node2/root_BusinessEntity.xml
index 8c923d9..da5fdb4 100644
--- a/juddi-tomcat/juddi_install_data_node2/root_BusinessEntity.xml
+++ b/juddi-tomcat/juddi_install_data_node2/root_BusinessEntity.xml
@@ -38,7 +38,7 @@
   
 See below for other fields that you may want to edit...
 -->
-<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:another.juddi.apache.org:node2">
      <!-- Change the name field to represent the name of your registry -->
      <name xml:lang="en">An Apache jUDDI Node (2)</name>
      <!-- Change the description field to provided a brief description of your registry -->
@@ -54,7 +54,7 @@ See below for other fields that you may want to edit...
           <!-- As mentioned above, you may want to provide user-defined keys for these (and the services/bindingTemplates below.  Services that you
           don't intend to support should be removed entirely -->
           <!-- inquiry v3 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-inquiry" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-inquiry" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Inquiry Service</name>
                <description xml:lang="en">Web Service supporting UDDI Inquiry API</description>
                <bindingTemplates>
@@ -124,7 +124,7 @@ See below for other fields that you may want to edit...
                </categoryBag>
           </businessService>
           <!-- inquiry v2 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-inquiryv2" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-inquiryv2" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDIv2 Inquiry Service</name>
                <description xml:lang="en">Web Service supporting UDDIv2 Inquiry API</description>
                <bindingTemplates>
@@ -165,7 +165,7 @@ See below for other fields that you may want to edit...
                </categoryBag>
           </businessService>
           <!-- inquiry v3 REST -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-inquiry-rest" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-inquiry-rest" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Inquiry REST Service</name>
                <description xml:lang="en">Web Service supporting UDDI Inquiry API via HTTP GET</description>
                <bindingTemplates>
@@ -200,7 +200,7 @@ See below for other fields that you may want to edit...
                </categoryBag>
           </businessService>
           <!-- publish v3 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-publish" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-publish" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Publish Service</name>
                <description xml:lang="en">Web Service supporting UDDI Publish API</description>
                <bindingTemplates>
@@ -265,7 +265,7 @@ See below for other fields that you may want to edit...
           </businessService>
  
           <!-- publish v2 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-publishv2" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-publishv2" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDIv2 Publish Service</name>
                <description xml:lang="en">Web Service supporting UDDIv2 Publish API</description>
                <bindingTemplates>
@@ -302,7 +302,7 @@ See below for other fields that you may want to edit...
  
           <!-- security v3 -->
 
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-security" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-security" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Security Service</name>
                <description xml:lang="en">Web Service supporting UDDI Security API</description>
                <bindingTemplates>
@@ -342,7 +342,7 @@ See below for other fields that you may want to edit...
                </categoryBag>
           </businessService>
           <!-- custody v3 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-custodytransfer" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-custodytransfer" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Custody and Ownership Transfer Service</name>
                <description xml:lang="en">Web Service supporting UDDI Custody and Ownership Transfer API</description>
                <bindingTemplates>
@@ -411,7 +411,7 @@ See below for other fields that you may want to edit...
           </businessService>
                 
           <!-- subscription v3 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-subscription" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-subscription" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Subscription Service</name>
                <description xml:lang="en">Web Service supporting UDDI Subscription API</description>
                <bindingTemplates>
@@ -477,7 +477,7 @@ See below for other fields that you may want to edit...
                </categoryBag>
           </businessService>
           <!-- subscription listener v3 -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-subscriptionlistener" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-subscriptionlistener" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Subscription Listener Service</name>
                <description xml:lang="en">Web Service supporting UDDI Subscription Listener API</description>
                <bindingTemplates>
@@ -520,7 +520,7 @@ See below for other fields that you may want to edit...
           </businessService>
 	
 
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-valueset" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-valueset" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Value Set API Service</name>
                <description xml:lang="en">Web Service supporting UDDI Value Set Validation service. This service provides tModel value validation and is
                     configured using the jUDDI Publisher Service</description>
@@ -562,7 +562,7 @@ See below for other fields that you may want to edit...
           </businessService>
 	
 	
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-valueset-cache" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-valueset-cache" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Value Set Caching API Service</name>
                <description xml:lang="en">Web Service supporting UDDI Value Set Caching service. This service provides tModel value validation and is
                     configured using the jUDDI Publisher Service</description>
@@ -601,7 +601,7 @@ See below for other fields that you may want to edit...
 	
 
 
-          <businessService serviceKey="uddi:another.juddi.apache.org:replication" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:replication" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">UDDI Replication API Version 3</name>
                <description xml:lang="en">UDDI Replication API Version 3</description>
                <bindingTemplates>
@@ -625,7 +625,7 @@ See below for other fields that you may want to edit...
 	
                 
           <!-- juddi api service -->
-          <businessService serviceKey="uddi:another.juddi.apache.org:services-publisher" businessKey="uddi:another.juddi.apache.org:businesses-asf">
+          <businessService serviceKey="uddi:another.juddi.apache.org:services-publisher" businessKey="uddi:another.juddi.apache.org:node2">
                <name xml:lang="en">jUDDI Publisher Service</name>
                <description xml:lang="en">Web Service supporting jUDDI specific API</description>
                <bindingTemplates>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-tomcat/juddi_install_data_node3/UDDI_Publisher.xml
----------------------------------------------------------------------
diff --git a/juddi-tomcat/juddi_install_data_node3/UDDI_Publisher.xml b/juddi-tomcat/juddi_install_data_node3/UDDI_Publisher.xml
new file mode 100644
index 0000000..0bfd815
--- /dev/null
+++ b/juddi-tomcat/juddi_install_data_node3/UDDI_Publisher.xml
@@ -0,0 +1,22 @@
+<?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.
+ *
+ */ -->
+<publisher xmlns="urn:juddi-apache-org:api_v3" authorizedName="uddi">
+  <publisherName>UDDI publisher</publisherName>
+  <isAdmin>false</isAdmin>
+</publisher>
+


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


[6/6] juddi git commit: JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) record

Posted by al...@apache.org.
JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build
JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) records


Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/c0354a44
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/c0354a44
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/c0354a44

Branch: refs/heads/master
Commit: c0354a44fd16fb42ea8c33d0ffabe86f78e73e54
Parents: 2a24372
Author: Alex <al...@apache.org>
Authored: Thu Jan 29 10:17:59 2015 -0500
Committer: Alex <al...@apache.org>
Committed: Thu Jan 29 10:17:59 2015 -0500

----------------------------------------------------------------------
 juddi-core/pom.xml                              |  345 +--
 .../main/java/org/apache/juddi/Registry.java    |    2 +-
 .../org/apache/juddi/api/impl/JUDDIApiImpl.java |  109 +-
 .../juddi/api/impl/UDDIPublicationImpl.java     |    6 +-
 .../juddi/api/impl/UDDIReplicationImpl.java     |  263 +-
 .../org/apache/juddi/api/util/JUDDIQuery.java   |   10 +-
 .../apache/juddi/mapping/MappingApiToModel.java |   11 +-
 .../org/apache/juddi/model/ChangeRecord.java    |   20 +-
 .../juddi/replication/ReplicationNotifier.java  |  135 +-
 .../org/apache/juddi/rmi/JUDDIApiService.java   |    7 +
 .../juddi/api/impl/API_160_ReplicationTest.java |    2 +
 .../apache/juddi/api/runtime/juddiTestimpl.java |    8 +
 juddi-examples/more-uddi-samples/pom.xml        |  210 +-
 .../samples/CompareByTModelInstanceInfoQOS.java |    2 +-
 .../org/apache/juddi/samples/EntryPoint.java    |  465 +---
 .../juddi/samples/EntryPointSingleNode.java     |  471 ++++
 .../juddi/samples/EntryPoitMultiNode.java       |   81 +
 .../apache/juddi/samples/JuddiAdminService.java |  315 ++-
 .../apache/juddi/samples/UddiCreatebulk.java    |   17 +-
 .../samples/UddiDigitalSignatureBusiness.java   |   12 +
 .../apache/juddi/samples/UddiReplication.java   |   39 +-
 .../org/apache/juddi/samples/UddiSubscribe.java |   22 +-
 .../samples/UddiSubscribeAssertionStatus.java   |   22 +-
 .../juddi/samples/UddiSubscribeValidate.java    |   14 +
 .../samples/UddiSubscriptionManagement.java     |   13 +
 .../org/apache/juddi/samples/WadlImport.java    |   14 +-
 .../org/apache/juddi/samples/WsdlImport.java    |   12 +-
 .../resources/META-INF/simple-publish-uddi.xml  |   26 +
 juddi-tomcat/build.xml                          |   70 +
 .../root_BusinessEntity.xml                     |   28 +-
 .../juddi_install_data_node3/UDDI_Publisher.xml |   22 +
 .../juddi_install_data_node3/UDDI_tModels.xml   | 2362 ++++++++++++++++++
 .../root_BusinessEntity.xml                     |  668 +++++
 .../juddi_install_data_node3/root_Publisher.xml |   21 +
 .../root_tModelKeyGen.xml                       |   40 +
 juddi-tomcat/juddiv3Node2.xml                   |    2 +-
 juddi-tomcat/juddiv3Node3.xml                   |  230 ++
 juddi-tomcat/pom.xml                            |   12 +-
 juddi-tomcat/serverNode2.xml                    |    2 +-
 juddi-tomcat/serverNode3.xml                    |  145 ++
 juddi-tomcat/uddiNode3.xml                      |  151 ++
 .../juddi/adminconsole/hub/UddiAdminHub.java    |   60 +-
 .../juddi/adminconsole/resources/web.properties |    2 +
 .../adminconsole/resources/web_es.properties    |    2 +
 juddiv3-war/src/main/webapp/admin/changes.jsp   |  186 ++
 juddiv3-war/src/main/webapp/admin/csrf.jsp      |   15 +-
 juddiv3-war/src/main/webapp/admin/home.jsp      |   18 +
 .../joepublisher/businessEntitySigned.xml       |   88 +
 uddi-tck/pref-rpt-1422229264251.txt             |   12 +
 .../tck/JUDDI_300_MultiNodeIntegrationTest.java |   10 +-
 .../v3/tck/UDDI_090_RMIIntegrationTest.java     |   46 +-
 uddi-ws/pom.xml.orig                            |   85 +
 ...dReplicationChangeRecordsMessageRequest.java |  112 +
 ...ReplicationChangeRecordsMessageResponse.java |   77 +
 .../org/apache/juddi/api_v3/ObjectFactory.java  |  154 +-
 .../juddi/v3_service/JUDDIApiPortType.java      |   39 +-
 uddi-ws/src/main/resources/juddi_api_v1.wsdl    |   50 +
 57 files changed, 6313 insertions(+), 1049 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-core/pom.xml b/juddi-core/pom.xml
index 335ecd4..48da9e5 100644
--- a/juddi-core/pom.xml
+++ b/juddi-core/pom.xml
@@ -1,123 +1,123 @@
 <?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. * */ -->
+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. * */ -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.juddi</groupId>
-		<artifactId>juddi-parent</artifactId>
-		<version>3.3.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>juddi-core</artifactId>
-	<packaging>bundle</packaging>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.juddi</groupId>
+        <artifactId>juddi-parent</artifactId>
+        <version>3.3.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>juddi-core</artifactId>
+    <packaging>bundle</packaging>
 
-	<name>jUDDI Core Services</name>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<version>1.4.0</version>
-				<configuration>
-					<instructions>
-						<Export-Package>org.apache.juddi, org.apache.juddi.api,
-							org.apache.juddi.api.impl,
-							org.apache.juddi.api.util,
-							org.apache.juddi.config, org.apache.juddi.config,
-							org.apache.juddi.cryptor, org.apache.juddi.keygen,
-							org.apache.juddi.mapping, org.apache.juddi.model,
-							org.apache.juddi.query, org.apache.juddi.query.util,
-							org.apache.juddi.rmi, org.apache.juddi.subscription,
-							org.apache.juddi.subscription.notify,
-							org.apache.juddi.replication,
-							org.apache.juddi.validation, org.apache.juddi.validation.vsv, org.apache.juddi.v3.auth,
-							org.apache.juddi.v3.error</Export-Package>
-						<Include-Resource>juddi_install_data=src/main/resources/juddi_install_data,
-							src/main/resources/messages.properties</Include-Resource>
-					</instructions>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-antrun-plugin</artifactId>
-				<version>1.3</version>
-				<executions>
-					<execution>
-						<phase>generate-resources</phase>
-						<configuration>
-							<tasks>
-								<delete dir="juddi-derby-test-db" />
-							</tasks>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-              <groupId>org.codehaus.mojo</groupId>
-              <artifactId>hibernate3-maven-plugin</artifactId>
-              <version>2.2</version>
-              <!-- <executions> <execution> <phase>process-classes</phase> <goals> 
-                  <goal>hbm2ddl</goal> </goals> </execution> </executions> -->
-              <configuration>
-                  <components>
-                      <component>
-                          <name>hbm2ddl</name>
-                          <implementation>jpaconfiguration</implementation>
-                      </component>
-                  </components>
-                  <componentProperties>
-                      <persistenceunit>juddiDatabase</persistenceunit>
-                      <outputfilename>schema.ddl</outputfilename>
-                      <drop>false</drop>
-                      <create>true</create>
-                      <export>false</export>
-                      <format>true</format>
-                  </componentProperties>
-              </configuration>
-          </plugin>
-	</plugins>
-	</build>
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-ws</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>juddi-client</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck-base</artifactId>
-			<version>${project.parent.version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
+    <name>jUDDI Core Services</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>1.4.0</version>
+                <configuration>
+                    <instructions>
+                        <Export-Package>org.apache.juddi, org.apache.juddi.api,
+                            org.apache.juddi.api.impl,
+                            org.apache.juddi.api.util,
+                            org.apache.juddi.config, org.apache.juddi.config,
+                            org.apache.juddi.cryptor, org.apache.juddi.keygen,
+                            org.apache.juddi.mapping, org.apache.juddi.model,
+                            org.apache.juddi.query, org.apache.juddi.query.util,
+                            org.apache.juddi.rmi, org.apache.juddi.subscription,
+                            org.apache.juddi.subscription.notify,
+                            org.apache.juddi.replication,
+                            org.apache.juddi.validation, org.apache.juddi.validation.vsv, org.apache.juddi.v3.auth,
+                            org.apache.juddi.v3.error</Export-Package>
+                        <Include-Resource>juddi_install_data=src/main/resources/juddi_install_data,
+                            src/main/resources/messages.properties</Include-Resource>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <phase>generate-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <delete dir="juddi-derby-test-db" />
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>hibernate3-maven-plugin</artifactId>
+                <version>2.2</version>
+                <!-- <executions> <execution> <phase>process-classes</phase> <goals> 
+                <goal>hbm2ddl</goal> </goals> </execution> </executions> -->
+                <configuration>
+                    <components>
+                        <component>
+                            <name>hbm2ddl</name>
+                            <implementation>jpaconfiguration</implementation>
+                        </component>
+                    </components>
+                    <componentProperties>
+                        <persistenceunit>juddiDatabase</persistenceunit>
+                        <outputfilename>schema.ddl</outputfilename>
+                        <drop>false</drop>
+                        <create>true</create>
+                        <export>false</export>
+                        <format>true</format>
+                    </componentProperties>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-ws</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-client</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck-base</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>commons-configuration</groupId>
             <artifactId>commons-configuration</artifactId>
             <version>1.9</version>
         </dependency>
-		 <dependency>
-	<groupId>org.apache.commons</groupId>
-	<artifactId>commons-lang3</artifactId>
-	<version>3.1</version>
-</dependency>
-		<dependency>
-			<groupId>org.hibernate.javax.persistence</groupId>
-			<artifactId>hibernate-jpa-2.1-api</artifactId>
-			<version>1.0.0.Final</version>
-		</dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate.javax.persistence</groupId>
+            <artifactId>hibernate-jpa-2.1-api</artifactId>
+            <version>1.0.0.Final</version>
+        </dependency>
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-core</artifactId>
@@ -139,64 +139,69 @@
             <artifactId>cglib-nodep</artifactId>
             <version>2.1_3</version>
         </dependency>
-		<dependency>
-			<groupId>commons-codec</groupId>
-			<artifactId>commons-codec</artifactId>
-			<version>1.3</version>
-		</dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.3</version>
+        </dependency>
 		
-		<dependency>
-			<groupId>org.apache.geronimo.specs</groupId>
-			<artifactId>geronimo-jta_1.1_spec</artifactId>
-			<version>1.1.1</version>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.geronimo.javamail</groupId>
-			<artifactId>geronimo-javamail_1.4_mail</artifactId>
-			<version>1.8.3</version>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.derby</groupId>
-			<artifactId>derby</artifactId>
-			<version>10.5.3.0_1</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>mysql</groupId>
-			<artifactId>mysql-connector-java</artifactId>
-			<version>5.1.6</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>postgresql</groupId>
-			<artifactId>postgresql</artifactId>
-			<version>8.2-504.jdbc3</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.mockejb</groupId>
-			<artifactId>mockejb</artifactId>
-			<version>0.6-beta2</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>dumbster</groupId>
-			<artifactId>dumbster</artifactId>
-			<version>1.5</version>
-			<scope>test</scope>
-		</dependency>
-	 <dependency>
-	  <groupId>commons-collections</groupId>
-	  <artifactId>commons-collections</artifactId>
-	  <version>3.2</version>
-	 </dependency>
-	 <dependency>
-	  <groupId>javax.servlet</groupId>
-	  <artifactId>servlet-api</artifactId>
-	  <version>2.4</version>
-	 </dependency>
-	</dependencies>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jta_1.1_spec</artifactId>
+            <version>1.1.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.javamail</groupId>
+            <artifactId>geronimo-javamail_1.4_mail</artifactId>
+            <version>1.8.3</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <version>10.5.3.0_1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>8.2-504.jdbc3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockejb</groupId>
+            <artifactId>mockejb</artifactId>
+            <version>0.6-beta2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>dumbster</groupId>
+            <artifactId>dumbster</artifactId>
+            <version>1.5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+            <version>3.2</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.audit4j</groupId>
+            <artifactId>audit4j-core</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+    </dependencies>
 		
 </project>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/Registry.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/Registry.java b/juddi-core/src/main/java/org/apache/juddi/Registry.java
index eaaff53..4a1fff0 100644
--- a/juddi-core/src/main/java/org/apache/juddi/Registry.java
+++ b/juddi-core/src/main/java/org/apache/juddi/Registry.java
@@ -78,7 +78,7 @@ public class Registry {
          */
         public synchronized static void start() throws ConfigurationException {
                 if (registry == null) {
-                        log.info("Starting jUDDI registry...");
+                        log.info("Starting jUDDI registry...This is node " + AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID, ""));
                         registry = new Registry();
                         replicationNotifier = new ReplicationNotifier();
                         AppConfig.triggerReload();

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
index 3395dc7..3654d29 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
@@ -26,8 +26,12 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
 
 import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
 import javax.persistence.Query;
@@ -57,6 +61,8 @@ import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -113,7 +119,6 @@ import org.uddi.api_v3.SaveBusiness;
 import org.uddi.api_v3.SaveTModel;
 import org.uddi.api_v3.TModelInfo;
 import org.uddi.api_v3.TModelInfos;
-import org.uddi.repl_v3.ChangeRecordDelete;
 import org.uddi.repl_v3.ChangeRecords;
 import org.uddi.repl_v3.CommunicationGraph;
 import org.uddi.repl_v3.Operator;
@@ -409,10 +414,10 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * tModel will no longer be able to use the tModel if jUDDI Option
          * Enforce referential Integrity is enabled.<br>
          * Required permission, you must be am administrator
-         * {@link Property#JUDDI_ENFORCE_REFERENTIAL_INTEGRITY}. In addition, 
-         * tModels that are owned by another node via replication cannot be deleted using 
-         * this method and will throw an exception
-         
+         * {@link Property#JUDDI_ENFORCE_REFERENTIAL_INTEGRITY}. In addition,
+         * tModels that are owned by another node via replication cannot be
+         * deleted using this method and will throw an exception
+         *
          *
          * @param body
          * @throws DispositionReportFaultMessage
@@ -439,16 +444,18 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                                 if (obj == null) {
                                         throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.TModelNotFound", entityKey));
                                 }
-                                if (!obj.getNodeId().equals(node))
+                                if (!obj.getNodeId().equals(node)) {
                                         throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.TModelNodeOwner", entityKey + " this node " + node + " owning node " + obj.getNodeId()));
+                                }
                                 em.remove(obj);
-                                changes.add( UDDIPublicationImpl.getChangeRecord_deleteTModelDelete(entityKey, node));
-                                
+                                changes.add(UDDIPublicationImpl.getChangeRecord_deleteTModelDelete(entityKey, node));
+
                         }
 
                         tx.commit();
-                        for (ChangeRecord cr: changes)
+                        for (ChangeRecord cr : changes) {
                                 ReplicationNotifier.Enqueue(cr);
+                        }
                         long procTime = System.currentTimeMillis() - startTime;
                         serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL,
                                 QueryStatus.SUCCESS, procTime);
@@ -1187,11 +1194,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
-                        for (TemporaryMailContainer t:notifications){
-                                 USERFRIENDLYSMTPNotifier.notifySubscriptionDeleted(t);
+                        for (TemporaryMailContainer t : notifications) {
+                                USERFRIENDLYSMTPNotifier.notifySubscriptionDeleted(t);
                         }
-                       notifications.clear();
-                       notifications=null;
+                        notifications.clear();
+                        notifications = null;
                         long procTime = System.currentTimeMillis() - startTime;
                         serviceCounter.update(JUDDIQuery.ADMIN_DELETE_SUB,
                                 QueryStatus.SUCCESS, procTime);
@@ -1231,6 +1238,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                                 stm.getBusinessEntity().addAll(values.get(i).getBusinessEntity());
                                 pub.saveBusiness(stm);
                         }
+                        //TODO replication?
 
                         tx.commit();
                         long procTime = System.currentTimeMillis() - startTime;
@@ -1274,7 +1282,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                                 stm.getTModel().addAll(values.get(i).getTModel());
                                 pub.saveTModel(stm);
                         }
-
+                        //TODO replication?
                         tx.commit();
                         long procTime = System.currentTimeMillis() - startTime;
                         serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL,
@@ -1361,7 +1369,10 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
                         new ValidateReplication(publisher).validateSetReplicationNodes(replicationConfiguration, em, node);
 
+                        //StringWriter sw = new StringWriter();
+                        //JAXB.marshal(replicationConfiguration, sw);
                         org.apache.juddi.model.ReplicationConfiguration model = null;
+                        logger.info(publisher.getAuthorizedName() + " is setting the replication config from " + getRequestorsIPAddress());// + " " + sw.toString());
                         try {
                                 model = (ReplicationConfiguration) em.createQuery("select c FROM ReplicationConfiguration c order by c.serialNumber desc").getSingleResult();
                         } catch (Exception ex) {
@@ -1382,7 +1393,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         } else {
                                 //a config exists, remove it, add the new one
                                 //spec doesn't appear to mention if recording a change history on the config is required
-                                //assuming not.
+                                //assuming we'll keep it for now, might be useful later.
                                 //em.remove(model);
                                 oldConfig = new org.uddi.repl_v3.ReplicationConfiguration();
                                 MappingModelToApi.mapReplicationConfiguration(model, oldConfig);
@@ -1440,7 +1451,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
 
                         StringBuilder sql = new StringBuilder();
                         sql.append("select c from ReplicationConfiguration c order by c.serialNumber desc");
-                        sql.toString();
+                        //sql.toString();
                         Query qry = em.createQuery(sql.toString());
                         qry.setMaxResults(1);
 
@@ -1457,7 +1468,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         throw drfm;
                 } catch (Exception ex) {
                         //possible that there is no config to return
-                        logger.warn("Error caught, is there a replication config is avaiable? Returning a default config (no replication): " + ex.getMessage());
+                        //logger.warn("Error caught, is there a replication config is avaiable? Returning a default config (no replication): " + ex.getMessage());
                         logger.debug("Error caught, is there a replication config is avaiable? Returning a default config (no replication): ", ex);
 
                         r.setCommunicationGraph(new CommunicationGraph());
@@ -1516,7 +1527,9 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
 
                 r.setMaximumTimeToGetChanges(BigInteger.ONE);
                 r.setMaximumTimeToSyncRegistry(BigInteger.ONE);
-                // JAXB.marshal(r, System.out);
+                //StringWriter sw = new StringWriter();
+                //JAXB.marshal(r, sw);
+                //logger.info("dumping returned replication config " + sw.toString());
                 return r;
         }
 
@@ -1614,4 +1627,64 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         em.close();
                 }
         }
+
+        /**
+         * {@inheritDoc }
+         *
+         * @param body
+         * @return
+         * @throws DispositionReportFaultMessage
+         * @throws RemoteException
+         */
+        @Override
+        public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(
+                GetFailedReplicationChangeRecordsMessageRequest body)
+                throws DispositionReportFaultMessage, RemoteException {
+                //public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(GetFailedReplicationChangeRecordsMessageRequest body) throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
+                if (body == null) {
+                        throw new InvalidValueException(new ErrorMessage("errors.NullInput"));
+                }
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+                        UddiEntityPublisher requestor = this.getEntityPublisher(em, body.getAuthInfo());
+                        if (!((Publisher) requestor).isAdmin()) {
+                                throw new UserMismatchException(new ErrorMessage("errors.AdminReqd"));
+                        }
+                        if (body.getMaxRecords() <= 0) {
+                                body.setMaxRecords(20);
+                        }
+                        if (body.getOffset() < 0) {
+                                body.setOffset(0);
+                        }
+                        Query createQuery = em.createQuery("select m from ChangeRecord m where m.isAppliedLocally=false order by m.id DESC ");
+                        createQuery.setMaxResults((int) body.getMaxRecords());
+                        createQuery.setFirstResult((int) body.getOffset());
+                        List<ChangeRecord> resultList = createQuery.getResultList();
+                        GetFailedReplicationChangeRecordsMessageResponse res = new GetFailedReplicationChangeRecordsMessageResponse();
+                        res.setChangeRecords(new ChangeRecords());
+                        for (ChangeRecord cr : resultList) {
+                                res.getChangeRecords().getChangeRecord().add(MappingModelToApi.mapChangeRecord(cr));
+                        }
+
+                        tx.rollback();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_GET_FAILED_CRS,
+                                QueryStatus.SUCCESS, procTime);
+                        return res;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_GET_FAILED_CRS,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
index 0139497..275a202 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
@@ -1281,9 +1281,9 @@ public class UDDIPublicationImpl extends AuthenticatedService implements UDDIPub
                 return cr;
         }
 
-        public static ChangeRecord getChangeRecord(BusinessService modelBindingTemplate, org.uddi.api_v3.BusinessService api, String node) throws DispositionReportFaultMessage {
+        public static ChangeRecord getChangeRecord(BusinessService model, org.uddi.api_v3.BusinessService api, String node) throws DispositionReportFaultMessage {
                 ChangeRecord cr = new ChangeRecord();
-                cr.setEntityKey(modelBindingTemplate.getEntityKey());
+                cr.setEntityKey(model.getEntityKey());
                 cr.setNodeID(node);
 
                 cr.setRecordType(ChangeRecord.RecordType.ChangeRecordNewData);
@@ -1292,7 +1292,7 @@ public class UDDIPublicationImpl extends AuthenticatedService implements UDDIPub
                 crapi.setChangeRecordNewData(new ChangeRecordNewData());
                 crapi.getChangeRecordNewData().setBusinessService(api);
                 crapi.getChangeRecordNewData().setOperationalInfo(new OperationalInfo());
-                MappingModelToApi.mapOperationalInfo(modelBindingTemplate, crapi.getChangeRecordNewData().getOperationalInfo());
+                MappingModelToApi.mapOperationalInfo(model, crapi.getChangeRecordNewData().getOperationalInfo());
                 StringWriter sw = new StringWriter();
                 JAXB.marshal(crapi, sw);
                 try {

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
index 9a09308..7bcdf95 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
@@ -119,14 +119,16 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
 
                 Set<String> addedNodes = diffNodeList(oldnodes, newNodes);
                 if (queue == null) {
-                        queue = new ConcurrentLinkedQueue<String>();
+                        queue = new ConcurrentLinkedQueue<NotifyChangeRecordsAvailable>();
                 }
                 for (String s : addedNodes) {
                         if (!s.equals(node)) {
                                 logger.info("This node: " + node + ". New replication node queue for synchronization: " + s);
                                 //HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();
                                 //highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(s, 0L));
-                                queue.add(s);
+                                HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();
+                                highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(s, 0L));
+                                queue.add(new NotifyChangeRecordsAvailable(s, highWaterMarkVectorType));
                         }
                 }
 
@@ -201,7 +203,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
 
         private synchronized void Init() {
                 if (queue == null) {
-                        queue = new ConcurrentLinkedQueue<String>();
+                        queue = new ConcurrentLinkedQueue<NotifyChangeRecordsAvailable>();
                 }
                 timer = new PullTimerTask();
 
@@ -241,9 +243,9 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                         }
                         //ok someone told me there's a change available
                         while (!queue.isEmpty()) {
-                                String poll = queue.poll();
-                                if (poll != null && !poll.equalsIgnoreCase(node)) {
-                                        UDDIReplicationPortType replicationClient = getReplicationClient(poll);
+                                NotifyChangeRecordsAvailable poll = queue.poll();
+                                if (poll != null && !poll.getNotifyingNode().equalsIgnoreCase(node)) {
+                                        UDDIReplicationPortType replicationClient = getReplicationClient(poll.getNotifyingNode());
                                         if (replicationClient == null) {
                                                 logger.fatal("unable to obtain a replication client to node " + poll);
                                         } else {
@@ -256,31 +258,44 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                                                         //        logger.info("Node " + poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID()
                                                         //                + " USN " + poll.getChangesAvailable().getHighWaterMark().get(xx).getOriginatingUSN());
                                                         //}
-                                                        int recordsreturned = 1;
-                                                        while (recordsreturned > 0) {
-                                                                GetChangeRecords body = new GetChangeRecords();
-                                                                body.setRequestingNode(node);
-                                                                body.setResponseLimitCount(BigInteger.valueOf(20));
-
-                                                                body.setChangesAlreadySeen(getLastChangeRecordFrom(poll));
-                                                                logger.info("fetching updates from " + poll + " since " + body.getChangesAlreadySeen().getHighWaterMark().get(0).getOriginatingUSN() + " items still in the queue: " + queue.size());
-
-                                                                List<ChangeRecord> records
-                                                                        = replicationClient.getChangeRecords(body).getChangeRecord();
-                                                                //ok now we need to persist the change records
-                                                                logger.info("Change records retrieved from " + poll + ", " + records.size());
-                                                                for (int i = 0; i < records.size(); i++) {
-                                                                        //logger.info("Change records retrieved " + records.get(i).getChangeID().getNodeID() + " USN " + records.get(i).getChangeID().getOriginatingUSN());
-                                                                        PersistChangeRecord(records.get(i));
+                                                        Set<String> nodesHitThisCycle=new HashSet<String>();
+                                                        for (int xx = 0; xx < poll.getChangesAvailable().getHighWaterMark().size(); xx++) {
+                                                                int recordsreturned = 21;
+                                                                while (recordsreturned >= 20) {
+                                                                        if (nodesHitThisCycle.contains(poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID()))
+                                                                        {
+                                                                                logger.info("i've already hit the node " + poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID() + " this cycle, skipping");
+                                                                                break;
+                                                                        }
+                                                                        if (poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID().equalsIgnoreCase(node)) {
+                                                                                logger.info("ignoring updates that were generated here " + poll.getChangesAvailable().getHighWaterMark().get(xx).getOriginatingUSN() + " sent by " + poll.getNotifyingNode() + " this node is " + node);
+                                                                                break;
+                                                                        }
+                                                                        nodesHitThisCycle.add(poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID());
+                                                                        GetChangeRecords body = new GetChangeRecords();
+                                                                        body.setRequestingNode(node);
+                                                                        body.setResponseLimitCount(BigInteger.valueOf(100L));
+
+                                                                        body.setChangesAlreadySeen(getLastChangeRecordFrom(poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID()));
+                                                                        logger.info("fetching updates from " + poll.getNotifyingNode() + " since " + body.getChangesAlreadySeen().getHighWaterMark().get(0).getNodeID() + ":" + body.getChangesAlreadySeen().getHighWaterMark().get(0).getOriginatingUSN() + ", items still in the queue: " + queue.size());
+                                                                        //JAXB.marshal(body, System.out);
+                                                                        List<ChangeRecord> records
+                                                                                = replicationClient.getChangeRecords(body).getChangeRecord();
+                                                                        //ok now we need to persist the change records
+                                                                        logger.info("Change records retrieved from " + poll.getNotifyingNode() + ", " + records.size());
+                                                                        for (int i = 0; i < records.size(); i++) {
+                                                                                logger.info("Change records retrieved " + records.get(i).getChangeID().getNodeID() + " USN " + records.get(i).getChangeID().getOriginatingUSN());
+                                                                                PersistChangeRecord(records.get(i));
+                                                                        }
+                                                                        recordsreturned = records.size();
                                                                 }
-                                                                recordsreturned = records.size();
                                                         }
                                                 } catch (Exception ex) {
                                                         logger.error("Error caught fetching replication changes from " + poll + " @" + ((BindingProvider) replicationClient).getRequestContext().get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY), ex);
                                                 }
                                         }
                                 } else {
-                                        logger.warn("weird, popped an object from the queue but it was null.");
+                                        logger.warn("strange, popped an object from the queue but it was null or it from myself, ignoring...");
                                 }
                         }
                 }
@@ -293,7 +308,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
 
                 /**
                  * someone told me there's a change available, we retrieved it
-                 * and are processing the changes locally
+                 * and are processing the changes locally.
                  *
                  * @param rec
                  */
@@ -309,6 +324,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                         }
                         EntityManager em = PersistenceManager.getEntityManager();
                         EntityTransaction tx = em.getTransaction();
+                        org.apache.juddi.model.ChangeRecord mapChangeRecord = null;
                         /**
                          * In nodes that support pre-bundled replication
                          * responses, the recipient of the get_changeRecords
@@ -321,16 +337,33 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
 
                         try {
                                 tx.begin();
-                                //the change record rec must also be persisted!!
-                                org.apache.juddi.model.ChangeRecord mapChangeRecord = MappingApiToModel.mapChangeRecord(rec);
+                                //check to see if we have this update already
+                                Query createQuery = em.createQuery("select c from ChangeRecord c where c.nodeID=:node and c.originatingUSN=:oid");
+                                createQuery.setParameter("node", rec.getChangeID().getNodeID());
+                                createQuery.setParameter("oid", rec.getChangeID().getOriginatingUSN());
+                                Object existingrecord = null;
+                                try {
+                                        existingrecord = createQuery.getSingleResult();
+                                } catch (Exception ex) {
+                                        logger.debug("error checking to see if change record exists already (expected failure)", ex);
+                                }
+                                if (existingrecord != null) {
+                                        logger.info("I've already processed change record " + rec.getChangeID().getNodeID() + " " + rec.getChangeID().getOriginatingUSN());
+                                        return;
+                                }
+                                //if it didn't come from here and i haven't seen it yet
+                                ReplicationNotifier.EnqueueRetransmit(rec);
+                                //the remotechange record rec must also be persisted!!
+                                mapChangeRecord = MappingApiToModel.mapChangeRecord(rec);
                                 mapChangeRecord.setId(null);
+                                mapChangeRecord.setIsAppliedLocally(true);
                                 em.persist(mapChangeRecord);
                                 tx.commit();
-                                logger.debug("Remote CR saved, it was from " + mapChangeRecord.getNodeID()
+                                logger.info("Remote CR saved, it was from " + mapChangeRecord.getNodeID() //this is the origin of the change
                                         + " USN:" + mapChangeRecord.getOriginatingUSN()
                                         + " Type:" + mapChangeRecord.getRecordType().name()
                                         + " Key:" + mapChangeRecord.getEntityKey()
-                                        + " Local id:" + mapChangeRecord.getId());
+                                        + " Local id from sender:" + mapChangeRecord.getId());
                                 tx = em.getTransaction();
                                 tx.begin();
                                 //<editor-fold defaultstate="collapsed" desc="delete a record">
@@ -423,6 +456,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
 
                                                         BusinessEntity model = em.find(org.apache.juddi.model.BusinessEntity.class, rec.getChangeRecordNewData().getBusinessEntity().getBusinessKey());
                                                         if (model != null) {
+                                                                //if the owner of the new data is me, and the update didn't originate from me
                                                                 if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)
                                                                         && !model.getNodeId().equals(node)) {
                                                                         if (model.getIsTransferInProgress()) {
@@ -434,7 +468,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                                                                                 em.merge(model);
                                                                         } else {
                                                                                 //block it, unexpected transfer
-                                                                                throw new Exception("Unexpected entity transfer to this node from " + rec.getChangeID().getNodeID());
+                                                                                throw new Exception("Unexpected entity transfer to to node " + node + " from " + rec.getChangeID().getNodeID());
                                                                         }
 
                                                                 } else if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)
@@ -455,7 +489,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                                                                         em.merge(model);
 
                                                                 }
-                                                                
+
                                                         } else {
                                                                 model = new BusinessEntity();
                                                                 MappingApiToModel.mapBusinessEntity(rec.getChangeRecordNewData().getBusinessEntity(), model);
@@ -739,10 +773,31 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                                 tx.commit();
 
                         } catch (Exception drfm) {
-                                logger.warn("Error persisting change record!", drfm);
+
+                                logger.warn("Error applying the change record! ", drfm);
                                 StringWriter sw = new StringWriter();
                                 JAXB.marshal(rec, sw);
                                 logger.warn("This is the record that failed to persist: " + sw.toString());
+                                if (tx.isActive()) {
+                                        tx.rollback();
+                                }
+                                if (mapChangeRecord != null) {
+                                        //set the change record's isApplied to false
+                                        try {
+                                                tx = em.getTransaction();
+                                                tx.begin();
+                                                mapChangeRecord.setIsAppliedLocally(false);
+                                                em.merge(mapChangeRecord);
+                                                tx.commit();
+                                        } catch (Exception e) {
+                                                logger.error("error updating change record!!", e);
+                                                if (tx.isActive()) {
+                                                        tx.rollback();
+                                                }
+                                        }
+                                } else {
+                                        logger.fatal("whoa! change record is null when saving a remote change record, this is unexpected and should be reported");
+                                }
                         } finally {
                                 if (tx.isActive()) {
                                         tx.rollback();
@@ -751,33 +806,35 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                         }
                 }
 
-                private HighWaterMarkVectorType getLastChangeRecordFrom(String notifyingNode) {
+                private HighWaterMarkVectorType getLastChangeRecordFrom(String sourcenode) {
                         HighWaterMarkVectorType ret = new HighWaterMarkVectorType();
                         ChangeRecordIDType cid = new ChangeRecordIDType();
-                        cid.setNodeID(notifyingNode);
+                        cid.setNodeID(sourcenode);
                         cid.setOriginatingUSN(0L);
                         EntityManager em = PersistenceManager.getEntityManager();
                         EntityTransaction tx = em.getTransaction();
                         try {
                                 tx.begin();
-                                Long id = 0L;
+                                //Long id = 0L;
                                 try {
-                                        cid.setOriginatingUSN((Long) em.createQuery("select e.originatingUSN from ChangeRecord e where e.nodeID = :node order by e.originatingUSN desc").setParameter("node", notifyingNode).setMaxResults(1).getSingleResult());
+                                        cid.setOriginatingUSN((Long) em.createQuery("select MAX(e.originatingUSN) from ChangeRecord e where e.nodeID = :node")
+                                                .setParameter("node", sourcenode)
+                                                .getSingleResult());
                                 } catch (Exception ex) {
-                                        logger.info(ex);
+                                        logger.info("unexpected error searching for last record from " + sourcenode, ex);
                                 }
 
                                 tx.rollback();
 
                         } catch (Exception drfm) {
-                                logger.warn("error caught fetching newest record from node " + notifyingNode, drfm);
+                                logger.warn("error caught fetching newest record from node " + sourcenode, drfm);
                         } finally {
                                 if (tx.isActive()) {
                                         tx.rollback();
                                 }
                                 em.close();
                         }
-
+                        logger.info("Highest known record for " + sourcenode + " is " + cid.getOriginatingUSN());
                         ret.getHighWaterMark().add(cid);
 
                         return ret;
@@ -851,9 +908,10 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
+                        tx.begin();
                         StringBuilder sql = new StringBuilder();
                         sql.append("select c from ReplicationConfiguration c order by c.serialNumber desc");
-                        sql.toString();
+                        //sql.toString();
                         Query qry = em.createQuery(sql.toString());
                         qry.setMaxResults(1);
 
@@ -933,7 +991,7 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                  * recent change record that has been successfully processed by
                  * the invocating node
                  */
-                int maxrecords = 100;
+                int maxrecords = 100;   //TODO config this
                 if (responseLimitCount != null) {
                         maxrecords = responseLimitCount.intValue();
                 }
@@ -941,66 +999,83 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                         tx.begin();
                         Long firstrecord = 0L;
                         Long lastrecord = null;
-
+                        Query createQuery = null;
+//SELECT t0.id, t0.change_contents, t0.entity_key, t0.appliedlocal, t0.node_id, t0.orginating_usn, t0.record_type FROM j3_chg_record t0 WHERE (t0.id > NULL AND t0.node_id = ?) ORDER BY t0.id ASC                        
                         if (changesAlreadySeen != null) {
                                 //this is basically a lower limit (i.e. the newest record that was processed by the requestor
                                 //therefore we want the oldest record stored locally to return to the requestor for processing
                                 for (int i = 0; i < changesAlreadySeen.getHighWaterMark().size(); i++) {
+                                        firstrecord = changesAlreadySeen.getHighWaterMark().get(i).getOriginatingUSN();
+                                        if (firstrecord == null) {
+                                                firstrecord = 0L;
+                                        }
                                         if (changesAlreadySeen.getHighWaterMark().get(i).getNodeID().equals(node)) {
-                                                firstrecord = changesAlreadySeen.getHighWaterMark().get(i).getOriginatingUSN();
+                                                //special case, search by database id
+                                                createQuery = em.createQuery("select e from ChangeRecord e where "
+                                                        + "(e.id > :inbound AND e.nodeID = :node) "
+                                                        + "order by e.id ASC");
+
+                                        } else {
+                                                createQuery = em.createQuery("select e from ChangeRecord e where "
+                                                        + "e.originatingUSN > :inbound AND e.nodeID = :node "
+                                                        + "order by e.originatingUSN ASC");
                                         }
-                                }
-                        }
-                        if (responseLimitVector != null) {
-                                //using responseLimitVector, indicating for each node in the graph the first change originating there that he does not wish to be returned.
-                                //upper limit basically
-                                for (int i = 0; i < responseLimitVector.getHighWaterMark().size(); i++) {
-                                        if (responseLimitVector.getHighWaterMark().get(i).getNodeID().equals(node)) {
-                                                lastrecord = responseLimitVector.getHighWaterMark().get(i).getOriginatingUSN();
+                                        logger.info("Query db for replication changes, lower index is " + (firstrecord) + " last index " + lastrecord + " record limit " + maxrecords);
+                                        logger.info("This node is" + node + ", request is for data originated from " + changesAlreadySeen.getHighWaterMark().get(i).getNodeID() + " and it's being sent back to " + requestingNode);
+
+                                        createQuery.setMaxResults(maxrecords);
+                                        createQuery.setParameter("inbound", firstrecord);
+                                        createQuery.setParameter("node", changesAlreadySeen.getHighWaterMark().get(i).getNodeID());
+                                        List<org.apache.juddi.model.ChangeRecord> records = (List<org.apache.juddi.model.ChangeRecord>) createQuery.getResultList();
+                                        logger.info(records.size() + " CR records returned from query");
+                                        for (int x = 0; x < records.size(); x++) {
+                                                ChangeRecord r = MappingModelToApi.mapChangeRecord(records.get(x));
+                                                //if (!Excluded(changesAlreadySeen, r)) {
+                                                ret.add(r);
+                                                //}
+
                                         }
                                 }
-                        }
-
-                        logger.info("Query db for replication changes, lower index is " + (firstrecord) + " last index " + lastrecord + " record limit " + maxrecords);
-                        Query createQuery = null;
-                        /* 
-                         //this don't work
-                         if (lastrecord != null) {
-                         createQuery = em.createQuery("select e from ChangeRecord e where "
-                         + "((e.id > :inbound AND e.nodeID = :node AND e.id < :lastrecord) OR "
-                         + "(e.originatingUSN > :inbound AND e.nodeID <> :node AND e.originatingUSN < :lastrecord)) "
-                         + "order by e.id ASC");
-                         createQuery.setParameter("lastrecord", lastrecord);
-                         } else {
-                         createQuery = em.createQuery("select e from ChangeRecord e where "
-                         + "((e.id > :inbound AND e.nodeID = :node) OR "
-                         + "(e.originatingUSN > :inbound AND e.nodeID <> :node)) "
-                         + "order by e.id ASC");
-                         }*/
-                        if (lastrecord != null) {
-                                createQuery = em.createQuery("select e from ChangeRecord e where "
-                                        + "(e.id > :inbound AND e.nodeID = :node AND e.id < :lastrecord) "
-                                        + "order by e.id ASC");
-                                createQuery.setParameter("lastrecord", lastrecord);
-                        } else {
-                                createQuery = em.createQuery("select e from ChangeRecord e where "
-                                        + "(e.id > :inbound AND e.nodeID = :node) "
-                                        + "order by e.id ASC");
-                        }
-                        createQuery.setMaxResults(maxrecords);
-                        createQuery.setParameter("inbound", firstrecord);
-                        createQuery.setParameter("node", node);
-
-                        List<org.apache.juddi.model.ChangeRecord> records = (List<org.apache.juddi.model.ChangeRecord>) createQuery.getResultList();
-                        logger.info(records.size() + " CR records returned from query");
-                        for (int i = 0; i < records.size(); i++) {
-                                ChangeRecord r = MappingModelToApi.mapChangeRecord(records.get(i));
-                                if (!Excluded(changesAlreadySeen, r)) {
-                                        ret.add(r);
+                        } /*if (responseLimitVector != null) {
+                         //using responseLimitVector, indicating for each node in the graph the first change originating there that he does not wish to be returned.
+                         //upper limit basically
+                         for (int i = 0; i < responseLimitVector.getHighWaterMark().size(); i++) {
+                         //if (responseLimitVector.getHighWaterMark().get(i).getNodeID().equals(node)) {
+                         lastrecord = responseLimitVector.getHighWaterMark().get(i).getOriginatingUSN();
+                         //}
+                         }
+                         }*/ else {
+                                if (firstrecord == null) {
+                                        firstrecord = 0L;
+                                }
+                                //assume that they just want records that originated from here?
+                                logger.info("Query db for replication changes, lower index is " + (firstrecord) + " last index " + lastrecord + " record limit " + maxrecords);
+                                logger.info("This node is" + node + " requesting node " + requestingNode);
+
+                                if (lastrecord != null) {
+                                        createQuery = em.createQuery("select e from ChangeRecord e where "
+                                                + "(e.id > :inbound AND e.nodeID = :node AND e.id < :lastrecord) "
+                                                + "order by e.id ASC");
+                                        createQuery.setParameter("lastrecord", lastrecord);
+                                } else {
+                                        createQuery = em.createQuery("select e from ChangeRecord e where "
+                                                + "(e.id > :inbound AND e.nodeID = :node) "
+                                                + "order by e.id ASC");
                                 }
+                                createQuery.setMaxResults(maxrecords);
+                                createQuery.setParameter("inbound", firstrecord);
+                                createQuery.setParameter("node", node);
+
+                                List<org.apache.juddi.model.ChangeRecord> records = (List<org.apache.juddi.model.ChangeRecord>) createQuery.getResultList();
+                                logger.info(records.size() + " CR records returned from query");
+                                for (int i = 0; i < records.size(); i++) {
+                                        ChangeRecord r = MappingModelToApi.mapChangeRecord(records.get(i));
+                                        //if (!Excluded(changesAlreadySeen, r)) {
+                                        ret.add(r);
+                                        //}
 
+                                }
                         }
-
                         tx.rollback();
                         long procTime = System.currentTimeMillis() - startTime;
                         serviceCounter.update(ReplicationQuery.GET_CHANGERECORDS,
@@ -1120,14 +1195,14 @@ public class UDDIReplicationImpl extends AuthenticatedService implements UDDIRep
                 new ValidateReplication(null).validateNotifyChangeRecordsAvailable(body, ctx);
 
                 logger.info(body.getNotifyingNode() + " just told me that there are change records available, enqueuing...size is " + queue.size());
-                if (!queue.contains(body.getNotifyingNode())) {
-                        queue.add(body.getNotifyingNode());
-                }
+                //if (!queue.contains(body.getNotifyingNode())) {
+                queue.add(body);
+                //}
                 long procTime = System.currentTimeMillis() - startTime;
                 serviceCounter.update(ReplicationQuery.NOTIFY_CHANGERECORDSAVAILABLE,
                         QueryStatus.SUCCESS, procTime);
         }
-        private static Queue<String> queue = null;
+        private static Queue<NotifyChangeRecordsAvailable> queue = null;
 
         /**
          * transfers custody of an entity from node1/user1 to node2/user2

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
index df501a9..7951030 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
@@ -20,8 +20,7 @@ import java.util.Hashtable;
 import java.util.List;
 
 /**
- *
- * @author alex
+ * enumerated data type to help with MBean lookups
  */
 public enum JUDDIQuery implements UDDIQuery {
 
@@ -47,8 +46,8 @@ public enum JUDDIQuery implements UDDIQuery {
         GET_REPLICATION_NODES("get_replicationNodes"),
         ADMIN_SAVE_SUB("admin_saveClientSubscription"),
         ADMIN_GET_HISTORY("admin_getEntityHistory"),
-        INVOKE_SYNCSUB("invoke_synchSubscription");
-
+        INVOKE_SYNCSUB("invoke_synchSubscription"),
+        ADMIN_GET_FAILED_CRS("getFailedReplicationChangeRecords");
         private String _query;
         private static Hashtable<String, JUDDIQuery> _inquiryQueries = null;
 
@@ -88,7 +87,8 @@ public enum JUDDIQuery implements UDDIQuery {
                         _inquiryQueries.put("admin_saveClientSubscription", JUDDIQuery.ADMIN_SAVE_SUB);
                         _inquiryQueries.put("admin_getEntityHistory", JUDDIQuery.ADMIN_GET_HISTORY);
                         _inquiryQueries.put("invoke_synchSubscription", JUDDIQuery.INVOKE_SYNCSUB);
-        
+                        _inquiryQueries.put("getFailedReplicationChangeRecords", JUDDIQuery.ADMIN_GET_FAILED_CRS);
+
                         
                 }
         }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
index 1dd95a4..1f6cdb3 100644
--- a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
+++ b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
@@ -1394,8 +1394,14 @@ public class MappingApiToModel {
 
         public static org.apache.juddi.model.ChangeRecord mapChangeRecord(ChangeRecord rec) throws UnsupportedEncodingException {
                 org.apache.juddi.model.ChangeRecord r = new org.apache.juddi.model.ChangeRecord();
-                r.setId(rec.getChangeID().getOriginatingUSN());
+                //r.setId(rec.getChangeID().getOriginatingUSN());
                 r.setOriginatingUSN(rec.getChangeID().getOriginatingUSN());
+                if (r.getOriginatingUSN()==null){
+                        logger.warn("strange, the getOriginatingUSN is null!!");
+                        JAXB.marshal(rec, System.out);
+                        Thread.dumpStack();
+                }
+                r.setNodeID(rec.getChangeID().getNodeID());
                 if (rec.getChangeRecordNewData() != null) {
                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordNewData);
                         r.setEntityKey(rec.getChangeRecordNewData().getOperationalInfo().getEntityKey());
@@ -1436,8 +1442,7 @@ public class MappingApiToModel {
                 } else {
                         throw new UnsupportedEncodingException("unknown type!");
                 }
-                r.setNodeID(rec.getChangeID().getNodeID());
-
+                
                 StringWriter sw = new StringWriter();
                 JAXB.marshal(rec, sw);
                 r.setContents(sw.toString().getBytes("UTF8"));

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java b/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java
index e9113b4..b0de15c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java
+++ b/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java
@@ -25,9 +25,13 @@ import javax.persistence.Id;
 import javax.persistence.Lob;
 import javax.persistence.Table;
 import javax.persistence.TableGenerator;
+import javax.persistence.UniqueConstraint;
 
 @Entity
-@Table(name = "j3_chg_record")
+@Table(name = "j3_chg_record"
+        //, uniqueConstraints = @UniqueConstraint(columnNames = {"node_id", "orginating_usn"}) 
+)
+ 
 public class ChangeRecord implements Serializable {
 
         private static final long serialVersionUID = 1L;
@@ -38,6 +42,7 @@ public class ChangeRecord implements Serializable {
         private RecordType e = RecordType.ChangeRecordNull;
         private Long id;
         private String entityKey;
+        private boolean appliedLocally = false;
 
         @Column(name = "change_contents")
         @Lob
@@ -114,4 +119,17 @@ public class ChangeRecord implements Serializable {
         public void setOriginatingUSN(Long value) {
                 this.originatingUSN = value;
         }
+        
+        /**
+         * returns true if the changes represented by this change record were applied successfully at this node
+         * @return 
+         */
+        @Column(name = "appliedlocal")
+        public boolean getIsAppliedLocally() {
+                return appliedLocally;
+        }
+
+        public void setIsAppliedLocally(boolean value) {
+                this.appliedLocally = value;
+        }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
index 23a8845..59d5b6a 100644
--- a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
+++ b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
@@ -16,6 +16,7 @@
  */
 package org.apache.juddi.replication;
 
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -25,6 +26,8 @@ import java.util.Set;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
 import javax.persistence.Query;
@@ -37,6 +40,7 @@ import org.apache.juddi.api_v3.Node;
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.PersistenceManager;
 import org.apache.juddi.config.Property;
+import org.apache.juddi.mapping.MappingApiToModel;
 import org.apache.juddi.mapping.MappingModelToApi;
 import org.apache.juddi.model.ChangeRecord;
 import org.apache.juddi.model.ReplicationConfiguration;
@@ -91,34 +95,50 @@ public class ReplicationNotifier extends TimerTask {
         //ReplicationNotifier.Enqueue(this);
         public synchronized static void Enqueue(org.apache.juddi.model.ChangeRecord change) {
                 if (queue == null) {
-                        queue = new ConcurrentLinkedQueue<ChangeRecord>();
+                        queue = new ConcurrentLinkedQueue<org.apache.juddi.model.ChangeRecord>();
                 }
                 queue.add(change);
         }
-        static Queue<ChangeRecord> queue;
+
+        public synchronized static void EnqueueRetransmit(org.uddi.repl_v3.ChangeRecord change) {
+                if (queue2 == null) {
+                        queue2 = new ConcurrentLinkedQueue<org.uddi.repl_v3.ChangeRecord>();
+                }
+                queue2.add(change);
+        }
+        static Queue<org.apache.juddi.model.ChangeRecord> queue;
+        static Queue<org.uddi.repl_v3.ChangeRecord> queue2;
 
         /**
+         * Note: this is for locally originated changes only, see 
+         * {@link org.apache.juddi.api.impl.UDDIReplicationImpl.PullTimerTask#PersistChangeRecord PersistChangeRecord
+         * } for how remote changes are processed
          *
          * @param j must be one of the UDDI save APIs
+         *
          */
-        protected void ProcessChangeRecord(ChangeRecord j) {
+        protected void ProcessChangeRecord(org.apache.juddi.model.ChangeRecord j) {
                 //store and convert the changes to database model
 
+                //TODO need a switch to send the notification without persisting the record
+                //this is to support multihop notifications
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = null;
                 try {
                         tx = em.getTransaction();
                         tx.begin();
-
+                        j.setIsAppliedLocally(true);
                         em.persist(j);
-                        log.debug("CR saved locally, it was from " + j.getNodeID()
+                        j.setOriginatingUSN(j.getId());
+                        em.merge(j);
+                        log.info("CR saved locally, it was from " + j.getNodeID()
                                 + " USN:" + j.getOriginatingUSN()
                                 + " Type:" + j.getRecordType().name()
                                 + " Key:" + j.getEntityKey()
                                 + " Local id:" + j.getId());
                         tx.commit();
                 } catch (Exception ex) {
-                        log.error("error", ex);
+                        log.fatal("unable to store local change record locally!!", ex);
                         if (tx != null && tx.isActive()) {
                                 tx.rollback();
                         }
@@ -128,6 +148,12 @@ public class ReplicationNotifier extends TimerTask {
                 }
 
                 log.debug("ChangeRecord: " + j.getId() + "," + j.getEntityKey() + "," + j.getNodeID() + "," + j.getOriginatingUSN() + "," + j.getRecordType().toString());
+                SendNotifications(j.getId(), j.getNodeID(), false);
+
+        }
+
+        private void SendNotifications(Long id, String origin_node, boolean isRetrans) {
+
                 org.uddi.repl_v3.ReplicationConfiguration repcfg = FetchEdges();
 
                 //TODO figure out what this statement means 7.5.3
@@ -142,10 +168,16 @@ public class ReplicationNotifier extends TimerTask {
                         return;
 
                 }
+                if (id==null || origin_node==null){
+                        log.fatal("Either the id is null or the origin_node is null. I can't send out this alert!!");
+                        //throw new Exception(node);
+                        return;
+                }
+
                 Set<Object> destinationUrls = new HashSet<Object>();
 
                 if (repcfg.getCommunicationGraph() == null
-                        || repcfg.getCommunicationGraph().getEdge().isEmpty()) {
+                        || repcfg.getCommunicationGraph().getEdge().isEmpty() && !isRetrans) {
                         //no edges or graph defined, default to the operator list
                         for (Operator o : repcfg.getOperator()) {
                                 //no need to tell myself about a change at myself
@@ -177,80 +209,78 @@ public class ReplicationNotifier extends TimerTask {
                                                         }
                                                 }
                                         }
-                                        if (container.primaryUrl!=null)
+                                        if (container.primaryUrl != null) {
                                                 destinationUrls.add(container);
+                                        }
 
                                 }
-                                
+
                         }
 
                 }
 
                 UDDIReplicationPortType x = uddiService.getUDDIReplicationPort();
-                if (destinationUrls.isEmpty())
+                if (destinationUrls.isEmpty()) {
                         log.fatal("Something is bizarre with the replication config. I should have had at least one node to notify, but I have none!");
+                }
                 for (Object s : destinationUrls) {
-                        
+
                         NotifyChangeRecordsAvailable req = new NotifyChangeRecordsAvailable();
 
                         req.setNotifyingNode(node);
                         HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();
 
-                        highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(node, j.getId()));
+                        highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(origin_node, id));
                         req.setChangesAvailable(highWaterMarkVectorType);
-                        
-                        
-                        if (s instanceof String)
-                                SendNotification(x,(String)s, req);
-                        else if (s instanceof PrimaryAlternate)
-                        {
+
+                        if (s instanceof String) {
+                                SendNotification(x, (String) s, req);
+                        } else if (s instanceof PrimaryAlternate) {
                                 //more complex directed graph stuff
-                                PrimaryAlternate pa = (PrimaryAlternate)s;
-                                if (!SendNotification(x, pa.primaryUrl, req))
-                                {
-                                        for (String url : pa.alternateUrls){
-                                                if (SendNotification(x, url, req))
+                                PrimaryAlternate pa = (PrimaryAlternate) s;
+                                if (!SendNotification(x, pa.primaryUrl, req)) {
+                                        for (String url : pa.alternateUrls) {
+                                                if (SendNotification(x, url, req)) {
                                                         break;
+                                                }
                                                 //no need to continue to additional alternates
                                         }
-                                }
-                                else
-                                {
+                                } else {
                                         //primary url succeeded, no further action required
                                 }
-                                
+
                         }
-                        
+
                         //TODO the spec talks about control messages, should we even support it? seems pointless
-                        
-                        
                 }
+
         }
 
         /**
          * return true if successful
+         *
          * @param x
          * @param s
          * @param req
-         * @return 
+         * @return
          */
         private boolean SendNotification(UDDIReplicationPortType x, String s, NotifyChangeRecordsAvailable req) {
-                        ((BindingProvider) x).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, s);
-                        try {
-                                x.notifyChangeRecordsAvailable(req);
-                                log.debug("Successfully sent change record available message to " + s);
-                                return true;
-                        } catch (Exception ex) {
-                                log.warn("Unable to send change notification to " + s);
-                                log.debug("Unable to send change notification to " + s, ex);
-                        }
-                        return false;
+                ((BindingProvider) x).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, s);
+                try {
+                        x.notifyChangeRecordsAvailable(req);
+                        log.info("Successfully sent change record available message to " + s + " this node: " + node);
+                        return true;
+                } catch (Exception ex) {
+                        log.warn("Unable to send change notification to " + s + " this node: " + node);
+                        log.debug("Unable to send change notification to " + s, ex);
+                }
+                return false;
         }
 
         class PrimaryAlternate {
 
-                String primaryUrl=null;
-                List<String> alternateUrls=new ArrayList<String>();
+                String primaryUrl = null;
+                List<String> alternateUrls = new ArrayList<String>();
         }
 
         public synchronized void run() {
@@ -258,6 +288,9 @@ public class ReplicationNotifier extends TimerTask {
                 if (queue == null) {
                         queue = new ConcurrentLinkedQueue();
                 }
+                if (queue2 == null) {
+                        queue2 = new ConcurrentLinkedQueue();
+                }
                 //TODO revisie this
                 if (!queue.isEmpty()) {
                         log.info("Replication, Notifying nodes of new change records. " + queue.size() + " queued");
@@ -271,6 +304,22 @@ public class ReplicationNotifier extends TimerTask {
                         ProcessChangeRecord(j);
 
                 }
+
+                while (!queue2.isEmpty()) {
+                        //for each change at this node
+
+                        org.uddi.repl_v3.ChangeRecord j = queue2.poll();
+                        
+                        ChangeRecord model = new ChangeRecord();
+                        try {
+                                model=MappingApiToModel.mapChangeRecord(j);
+                        } catch (UnsupportedEncodingException ex) {
+                                Logger.getLogger(ReplicationNotifier.class.getName()).log(Level.SEVERE, null, ex);
+                        }
+                        log.info("retransmitting CR notificationm entity owner: " + j.getChangeID().getNodeID() + " CR: " + j.getChangeID().getOriginatingUSN() + " key:" + model.getEntityKey() + " " + model.getRecordType().name() + " accepted locally:"+ model.getIsAppliedLocally());
+                        SendNotifications(j.getChangeID().getOriginatingUSN(), j.getChangeID().getNodeID(), true);
+
+                }
         }
 
         /**


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


[5/6] juddi git commit: JUDDI-910 directed graph replication is now implemented, 3 instances of tomcat are now generates with juddi-tomcat build JUDDI-923 change record browser added, soap methods added for obtaining only failed (to apply changes) record

Posted by al...@apache.org.
http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java b/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
index 00081e9..1a922c4 100644
--- a/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
+++ b/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
@@ -34,6 +34,8 @@ import org.apache.juddi.api_v3.DeletePublisher;
 import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -181,6 +183,11 @@ public class JUDDIApiService extends UnicastRemoteObject implements JUDDIApiPort
                
         }
 
+        @Override
+        public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(GetFailedReplicationChangeRecordsMessageRequest body) throws DispositionReportFaultMessage,RemoteException {
+                return juddiAPI.getFailedReplicationChangeRecords(body);
+        }
+
       
 	
 	

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java
index 298cf5d..1d8b3c2 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java
@@ -401,4 +401,6 @@ public class API_160_ReplicationTest {
                 Assert.assertNotNull(replicationNodes.getRegistryContact().getContact().getPersonName().get(0));
 
         }
+        
+        //alter a binding, service, business, tmodel that isn't owned by the initiator
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
index dc677ed..9032d34 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
@@ -31,6 +31,8 @@ import org.apache.juddi.api_v3.DeletePublisher;
 import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -192,5 +194,11 @@ public class juddiTestimpl implements JUDDIApiPortType {
                 CLIServerTest.sink = true;
                 return null;
         }
+
+        @Override
+        public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(GetFailedReplicationChangeRecordsMessageRequest body) throws DispositionReportFaultMessage,RemoteException {
+                 CLIServerTest.sink = true;
+                return null;
+        }
         
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/pom.xml b/juddi-examples/more-uddi-samples/pom.xml
index 6e7b239..27efbb3 100644
--- a/juddi-examples/more-uddi-samples/pom.xml
+++ b/juddi-examples/more-uddi-samples/pom.xml
@@ -1,109 +1,115 @@
 <?xml version="1.0"?>
 <!--
- * Copyright 2001-2009 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */ -->
+* 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.
+*
+*/ -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.juddi.example</groupId>
-		<artifactId>juddi-examples</artifactId>
-		<version>3.3.0-SNAPSHOT</version>
-	</parent>
-	<groupId>org.apache.juddi</groupId>
-	<artifactId>juddi-more-samples</artifactId>
-	<version>3.3.0-SNAPSHOT</version>
-	<name>jUDDI Even More Examples and Samples</name>
-	<url>http://maven.apache.org</url>
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-	</properties>
-	<dependencies>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>4.11</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>juddi-client</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-      <!-- a lorem ipsum generator MIT license-->
-      <dependency>
-         <groupId>de.sven-jacobs</groupId>
-         <artifactId>loremipsum</artifactId>
-         <version>1.0</version>
-      </dependency>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.juddi.example</groupId>
+        <artifactId>juddi-examples</artifactId>
+        <version>3.3.0-SNAPSHOT</version>
+    </parent>
+    <groupId>org.apache.juddi</groupId>
+    <artifactId>juddi-more-samples</artifactId>
+    <version>3.3.0-SNAPSHOT</version>
+    <name>jUDDI Even More Examples and Samples</name>
+    <url>http://maven.apache.org</url>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>juddi-client</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <!-- a lorem ipsum generator MIT license-->
+        <dependency>
+            <groupId>de.sven-jacobs</groupId>
+            <artifactId>loremipsum</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.2</version>
+        </dependency>
+
             
-	</dependencies>
-	<build>
-		<plugins>
-			<!-- examples are not very useful from a maven repo, so don't put it there -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-deploy-plugin</artifactId>
-				<configuration>
-					<skip>true</skip>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	<profiles>
-		<profile>
-			<id>default</id>
-			<activation>
-				<activeByDefault>true</activeByDefault>
-			</activation>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.apache.maven.plugins</groupId>
-						<artifactId>maven-surefire-plugin</artifactId>
-						<configuration>
-							<skip>true</skip>
-						</configuration>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-		<profile>
-			<id>interactive</id>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.codehaus.mojo</groupId>
-						<artifactId>exec-maven-plugin</artifactId>
-						<version>1.1.1</version>
-						<executions>
-							<execution>
-								<phase>test</phase>
-								<goals>
-									<goal>java</goal>
-								</goals>
-								<configuration>
-									<mainClass>org.apache.juddi.samples.EntryPoint</mainClass>
-								</configuration>
-							</execution>
-						</executions>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-	</profiles>
+    </dependencies>
+    <build>
+        <plugins>
+            <!-- examples are not very useful from a maven repo, so don't put it there -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>interactive</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>exec-maven-plugin</artifactId>
+                        <version>1.1.1</version>
+                        <executions>
+                            <execution>
+                                <phase>test</phase>
+                                <goals>
+                                    <goal>java</goal>
+                                </goals>
+                                <configuration>
+                                    <mainClass>org.apache.juddi.samples.EntryPoint</mainClass>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 
 
 </project>

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/CompareByTModelInstanceInfoQOS.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/CompareByTModelInstanceInfoQOS.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/CompareByTModelInstanceInfoQOS.java
index e19ae04..de8b0d7 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/CompareByTModelInstanceInfoQOS.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/CompareByTModelInstanceInfoQOS.java
@@ -37,7 +37,7 @@ import org.uddi.api_v3.TModelInstanceDetails;
 import org.uddi.api_v3.TModelInstanceInfo;
 
 /**
- *
+ * doesn't make changes to a remote server, just creates a few businesses and compares the two by qos parameters
  * @author Alex O'Ree
  */
 public class CompareByTModelInstanceInfoQOS {

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoint.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoint.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoint.java
index fb7700b..459071f 100644
--- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoint.java
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoint.java
@@ -17,7 +17,6 @@ package org.apache.juddi.samples;
 
 import java.util.List;
 import org.apache.juddi.api_v3.Node;
-import static org.apache.juddi.samples.JuddiAdminService.clerkManager;
 import org.apache.juddi.v3.client.config.UDDIClient;
 import org.apache.juddi.v3.client.config.UDDINode;
 import org.apache.juddi.v3.client.transport.Transport;
@@ -32,446 +31,62 @@ import org.uddi.v3_service.UDDISecurityPortType;
 public class EntryPoint {
 
         public static void main(String[] args) throws Exception {
+
+                //first menu
+                //connect to a node and do work on it
+                //multinode 
                 String input = null;
                 do {
                         System.out.println("____________________________");
-                        System.out.println("Interactive Samples for UDDI");
+                        System.out.println("jUDDI Interactive Command Line Interface");
                         System.out.println("____________________________");
-                        System.out.println(" 1) Login (get an auth token)");
-                        System.out.println(" 2) Compare Two Binding/tModelInstanceInfo - QOS Example");
-                        System.out.println(" 3) jUDDI Admin service - Register a Node (quick add of the jUDDI cloud server)");
-                        System.out.println(" 4) Find Binding by QOS Parameters (Binding/tModelInstanceInfo)");
-                        System.out.println(" 4.4) Find Business by QOS Parameters (Binding/tModelInstanceInfo)");
-                        System.out.println(" 5) Find Service by QOS Parameters (Binding/tModelInstanceInfo)");
-                        System.out.println(" 6) UDDI Create Bulk (makes N business/services");
-                        System.out.println(" 7) UDDI Custody Transfer (within a single node)");
-                        System.out.println(" 8) UDDI Digital Signatures - Sign a Business");
-                        System.out.println(" 9) UDDI Digital Signatures - Sign a Service");
-                        System.out.println("10) UDDI Digital Signatures - Sign a tModel");
-                        System.out.println("11) UDDI Digital Signatures - Search for Signed Items");
-                        System.out.println("12) Find a Binding, lists all bindings for all services");
-                        System.out.println("13) Find Endpoints of a service (given the key)");
-                        System.out.println("14) Get the details of a service");
-                        System.out.println("15) Make a Key Generator tModel");
-                        System.out.println("16) Create a Business Relationship Between two users and two Businesses");
-                        System.out.println("17) Subscriptions - Asynchronous, listens for all changes");
-                        System.out.println("18) Subscriptions - Synchronous");
-                        System.out.println("19) WSDL2UDDI - Register a service from a WSDL document");
-                        System.out.println("20) WADL2UDDI - Register a service from a WADL document");
-                        System.out.println("21) Logout (discard auth token)");
-                        System.out.println("22) Print auth token");
-                        System.out.println("23) Print Subscriptions");
-                        System.out.println("24) Delete a subscription");
-                        System.out.println("25) Delete all subscriptions");
-                        System.out.println("26) Subscriptions - Asynchronous, publisher assertion subscriptions");
-                        System.out.println("27) Replication - do_ping");
-                        System.out.println("28) Replication - get high watermarks");
-                        System.out.println("29) Replication - get change records");
-                        System.out.println("30) Replication - Setup replication between two nodes");
-                        System.out.println("31) Quick add the jUDDI cloud node to *this's configuration file");
-                        System.out.println("32) Add a node to *this's configuration file");
-                        System.out.println("33) Register a *this node to a jUDDI server");
-                        System.out.println("34) View all registered remote nodes on a jUDDI server");
-                        System.out.println("35) View all registered nodes for this client");
-                        System.out.println("36) UnRegister a node on a jUDDI server");
-                        System.out.println("37) Fetch the replication config from a jUDDI server");
-                        System.out.println("38) Set the replication config on a remote jUDDI server");
-                        System.out.println("magic) Sets the replication between two instances of jUDDI on 8080 and 8090");
-                        System.out.println("rep) Prints the current replication status of a given node");
-                        System.out.println("39) Digitally sign a UDDI entity from a file.");
-
-                        System.out.println("q) quit");
-                        System.out.print("Selection: ");
+                        System.out.println(" 1) Connect and login to a Node");
+                        System.out.println(" 2) Multinode and Replication commands");
+                        System.out.println(" 3) Offline code examples");
+                        System.out.println(" q) Quit/exit");
+                        System.out.print("jUDDI Main# ");
                         input = System.console().readLine();
-                        try {
-                                processInput(input);
-                        } catch (Exception ex) {
-                                ex.printStackTrace();
+                        if ("1".equals(input)) {
+                                goSingleNode();
+                        } else if ("2".equals(input)) {
+                                goMultiNode();
+                        } else if ("3".equals(input)) {
+                                goOfflineExamples();
                         }
-                } while (!input.equalsIgnoreCase("q"));
+                } while (!"q".equalsIgnoreCase(input));
         }
-        private static String authtoken = null;
-
-        private static void processInput(String input) throws Exception {
-                if (input == null) {
-                        return;
-                }
-                if (input.equals("1")) {
-                        UDDISecurityPortType security = null;
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
-                        System.out.println();
-                        System.out.println("Select a node (from *this config)");
-                        for (int i = 0; i < uddiNodeList.size(); i++) {
-                                System.out.print(i + 1);
-                                System.out.println(") " + uddiNodeList.get(i).getName() + uddiNodeList.get(i).getDescription());
-                        }
-                        System.out.println("Node #: ");
-                        int index = Integer.parseInt(System.console().readLine()) - 1;
-                        String node = uddiNodeList.get(index).getName();
-                        Transport transport = clerkManager.getTransport(node);
-                        security = transport.getUDDISecurityService();
-                        System.out.print("username: ");
-                        String uname = System.console().readLine();
-                        char passwordArray[] = System.console().readPassword("password: ");
-                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
-                        getAuthTokenRoot.setUserID(uname);
-                        getAuthTokenRoot.setCred(new String(passwordArray));
-                        authtoken = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
-                        System.out.println("Success!");
-                }
-                if (input.equals("2")) {
-                        CompareByTModelInstanceInfoQOS.main(null);
-                }
-                if (input.equals("3")) {
-                        new JuddiAdminService().quickRegisterRemoteCloud(authtoken);
-                }
-                if (input.equals("4")) {
-                        SearchByQos.doFindBinding(authtoken);
-                }
-                 if (input.equals("4.5")) {
-                        SearchByQos.doFindBusiness(authtoken);
-                }
-                if (input.equals("5")) {
-                        SearchByQos.doFindService(authtoken);
-                }
-                if (input.equals("6")) {
-                        System.out.print("businesses: ");
-                        int biz = Integer.parseInt(System.console().readLine());
-                        System.out.print("servicesPerBusiness: ");
-                        int svc = Integer.parseInt(System.console().readLine());
-                        new UddiCreatebulk("default").publishBusiness(authtoken, biz, svc);
-                }
-                if (input.equals("7")) {
-                        UDDISecurityPortType security = null;
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        Transport transport = clerkManager.getTransport();
-                        security = transport.getUDDISecurityService();
-
-                        System.out.print("Transfer from username: ");
-                        String uname = (System.console().readLine());
-                        char passwordArray[] = System.console().readPassword("password: ");
-                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
-                        getAuthTokenRoot.setUserID(uname);
-                        getAuthTokenRoot.setCred(new String(passwordArray));
-                        String authtokenFrom = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
-                        System.out.println("Success!");
-
-                        System.out.print("Transfer to username: ");
-                        String uname2 = (System.console().readLine());
-                        char passwordArray2[] = System.console().readPassword("password: ");
-                        getAuthTokenRoot = new GetAuthToken();
-                        getAuthTokenRoot.setUserID(uname2);
-                        getAuthTokenRoot.setCred(new String(passwordArray2));
-                        String authtokenFrom2 = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
-                        System.out.println("Success!");
-                        System.out.print("business/tModel key to transfer: ");
-                        String key = (System.console().readLine());
-                        new UddiCustodyTransfer().TransferBusiness(uname, authtokenFrom, uname2, authtokenFrom2, key);
-                }
-                if (input.equals("8")) {
-                        System.out.print("Business key to sign: ");
-                        String key = (System.console().readLine());
-                        new UddiDigitalSignatureBusiness().Fire(authtoken, key);
-                }
-                if (input.equals("9")) {
-                        System.out.print("Service key to sign: ");
-                        String key = (System.console().readLine());
-                        new UddiDigitalSignatureService().Fire(authtoken, key);
-                }
-                if (input.equals("10")) {
-                        System.out.print("tModel key to sign: ");
-                        String key = (System.console().readLine());
-                        new UddiDigitalSignatureTmodel().Fire(authtoken, key);
-                }
-                if (input.equals("11")) {
-                        new UddiDigitalSignatureSearch().Fire(authtoken);
-                }
-                if (input.equals("12")) {
-                        new UddiFindBinding().Fire(authtoken);
-                }
-                if (input.equals("13")) {
-                        System.out.print("Service key to parse the endpoints: ");
-                        String key = (System.console().readLine());
-                        new UddiFindEndpoints().Fire(authtoken, key);
-                }
-                if (input.equals("14")) {
-                        System.out.print("Service key: ");
-                        String key = (System.console().readLine());
-                        new UddiGetServiceDetails().Fire(authtoken, key);
-                }
-                if (input.equals("15")) {
-                        System.out.print("Get FQDN: ");
-                        String key = (System.console().readLine());
-                        new UddiKeyGenerator().Fire(authtoken, key);
-                }
-                if (input.equals("16")) {
-                        UDDISecurityPortType security = null;
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        Transport transport = clerkManager.getTransport();
-                        security = transport.getUDDISecurityService();
-
-                        System.out.print("1st Business username: ");
-                        String uname = (System.console().readLine());
-                        char passwordArray[] = System.console().readPassword("password: ");
-                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
-                        getAuthTokenRoot.setUserID(uname);
-                        getAuthTokenRoot.setCred(new String(passwordArray));
-                        String authtokenFrom = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
-                        System.out.println("Success!");
-
-                        System.out.print(uname + "'s business : ");
-                        String key = (System.console().readLine());
-
-                        System.out.print("2st Business username: ");
-                        String uname2 = (System.console().readLine());
-                        char passwordArray2[] = System.console().readPassword("password: ");
-                        getAuthTokenRoot = new GetAuthToken();
-                        getAuthTokenRoot.setUserID(uname2);
-                        getAuthTokenRoot.setCred(new String(passwordArray2));
-                        String authtokenFrom2 = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
-                        System.out.println("Success!");
-
-                        System.out.print(uname2 + "'s business : ");
-                        String key2 = (System.console().readLine());
-
-                        System.out.print("relationship (parent-child, peer-peer,or identity) : ");
-                        String relationship = (System.console().readLine());
-                        new UddiRelatedBusinesses().Fire(key, authtokenFrom, key2, authtokenFrom2, relationship);
-                }
-                if (input.equals("17")) {
-                        new UddiSubscribe().Fire();
-
-                }
-                if (input.equals("18")) {
-                        System.out.print("Subscription key: ");
-                        String key = (System.console().readLine());
-                        System.out.println("Fetching results for the past 30 days...");
-                        new UddiSubscribeValidate().go(authtoken, input);
-                }
-
-                if (input.equals("19")) {
-                        System.out.print("Path or URL to WSDL file: ");
-                        String url = (System.console().readLine());
-                        System.out.print("Business key to attach to: ");
-                        String key = (System.console().readLine());
-                        new WsdlImport().Fire(url, key, authtoken);
-                }
-                if (input.equals("20")) {
-                        System.out.print("Path or URL to WADL file: ");
-                        String url = (System.console().readLine());
-                        System.out.print("Business key to attach to: ");
-                        String key = (System.console().readLine());
-                        new WadlImport().Fire(url, key, authtoken);
-                }
-                if (input.equals("21")) {
-                        UDDISecurityPortType security = null;
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        Transport transport = clerkManager.getTransport();
-                        security = transport.getUDDISecurityService();
-
-                        DiscardAuthToken getAuthTokenRoot = new DiscardAuthToken();
-                        getAuthTokenRoot.setAuthInfo(authtoken);
-                        security.discardAuthToken(getAuthTokenRoot);
-                        System.out.println("Success!");
-                }
-
-                if (input.equals("22")) {
-                        System.out.println("Token info: " + authtoken);
-                }
-                if (input.equals("23")) {
-                        new UddiSubscriptionManagement().PrintSubscriptions(authtoken);
-                }
-                if (input.equals("24")) {
-                        System.out.print("Subscription key: ");
-                        String key2 = (System.console().readLine());
-                        new UddiSubscriptionManagement().DeleteSubscription(authtoken, key2);
-                }
-                if (input.equals("25")) {
-                        new UddiSubscriptionManagement().DeleteAllSubscriptions(authtoken);
-                }
-                if (input.equals("26")) {
-                        new UddiSubscribeAssertionStatus().Fire();
-
-                }
-                if (input.equals("27")) {
-                        //System.out.println("27) Replication - do_ping");
 
-                        System.out.print("URL: ");
-                        String key2 = (System.console().readLine());
-                        new UddiReplication().DoPing(key2);
-
-                }
-                if (input.equals("28")) {
-                        //System.out.println("28) Replication - get high watermarks");
-                        System.out.print("URL: ");
-                        String key2 = (System.console().readLine());
-                        new UddiReplication().GetHighWatermarks(key2);
-
-                }
-                if (input.equals("29")) {
-                        //System.out.println("29) Replication - get change records");
-                        System.out.print("URL: ");
-                        String key2 = (System.console().readLine());
-
-                        System.out.print("Change ID to fetch: ");
-                        String id = (System.console().readLine());
-                        
-                        System.out.print("Node id of something in the replication graph: ");
-                        String src = (System.console().readLine());
-
-                        new UddiReplication().GetChangeRecords(key2, Long.parseLong(id),src);
-
-                }
-                if (input.equals("30")) {
-                        // System.out.println("30) Replication - Setup replication between two nodes");
-                        new JuddiAdminService().setupReplication();
-
-                }
-                if (input.equals("31")) {
-                        //System.out.println("31) Quick add the jUDDI cloud node to *this's configuration file");
-                        new JuddiAdminService().quickRegisterLocalCloud();
-                }
-                if (input.equals("32")) {
-                        // System.out.println("32) Add a node to *this's configuration file");
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        UDDINode node = new UDDINode();
-                        System.out.print("Name (must be unique: ");
-                        node.setClientName(System.console().readLine());
-                        node.setName(node.getClientName());
-                        System.out.print("Description: ");
-                        node.setDescription(System.console().readLine());
-
-                        node.setHomeJUDDI(false);
-                        System.out.print("Inquiry URL: ");
-                        node.setInquiryUrl(System.console().readLine());
-
-                        System.out.print("Inquiry REST URL (optional): ");
-                        node.setInquiryRESTUrl(System.console().readLine());
-
-                        System.out.print("jUDDI API URL (optional): ");
-                        node.setJuddiApiUrl(System.console().readLine());
-                        System.out.print("Custody Transfer URL: ");
-                        node.setCustodyTransferUrl(System.console().readLine());
-                        System.out.print("Publish URL: ");
-                        node.setPublishUrl(System.console().readLine());
-                        System.out.print("Replication URL: ");
-                        node.setReplicationUrl(System.console().readLine());
-                        System.out.print("Security URL: ");
-                        node.setSecurityUrl(System.console().readLine());
-                        System.out.print("Subscription URL: ");
-                        node.setSubscriptionUrl(System.console().readLine());
-
-                        System.out.print("Subscription Listener URL: ");
-                        node.setSubscriptionListenerUrl(System.console().readLine());
-
-                        System.out.print("Transport (defaults to JAXWS): ");
-                        node.setProxyTransport(System.console().readLine());
-                        if (node.getProxyTransport() == null || node.getProxyTransport().trim().equalsIgnoreCase("")) {
-                                node.setProxyTransport(org.apache.juddi.v3.client.transport.JAXWSTransport.class.getCanonicalName());
-                        }
-                        System.out.print("Factory Initial (optional): ");
-                        node.setFactoryInitial(System.console().readLine());
-                        System.out.print("Factory Naming Provider (optional): ");
-                        node.setFactoryNamingProvider(System.console().readLine());
-                        System.out.print("Factory URL Packages (optional): ");
-                        node.setFactoryURLPkgs(System.console().readLine());
-
-                        clerkManager.getClientConfig().addUDDINode(node);
-                        clerkManager.getClientConfig().saveConfig();
-                        System.out.println("Saved.");
-                }
-                if (input.equals("33")) {
-
-                        //System.out.println("32) Register a *this node to a jUDDI server");
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
-                        System.out.println();
-
-                        System.out.println("Locally defined nodes:");
-                        for (int i = 0; i < uddiNodeList.size(); i++) {
-                                System.out.println("________________________________________________________________________________");
-                                System.out.println((i + 1) + ") Node name: " + uddiNodeList.get(i).getName());
-                                System.out.println((i + 1) + ") Node description: " + uddiNodeList.get(i).getDescription());
-                                System.out.println((i + 1) + ") Transport: " + uddiNodeList.get(i).getProxyTransport());
-                                System.out.println((i + 1) + ") jUDDI URL: " + uddiNodeList.get(i).getJuddiApiUrl());
-                        }
-                        System.out.println("Local Source Node: ");
-                        int index = Integer.parseInt(System.console().readLine()) - 1;
-
-                        System.out.println("Remote Destination(s):");
-                        for (int i = 0; i < uddiNodeList.size(); i++) {
-                                System.out.println("________________________________________________________________________________");
-                                System.out.println((i + 1) + ") Node name: " + uddiNodeList.get(i).getName());
-                                System.out.println((i + 1) + ") Node description: " + uddiNodeList.get(i).getDescription());
-                                System.out.println((i + 1) + ") Transport: " + uddiNodeList.get(i).getProxyTransport());
-                                System.out.println((i + 1) + ") jUDDI URL: " + uddiNodeList.get(i).getJuddiApiUrl());
-                        }
-                        System.out.println("Remote Destination Node to publish to: ");
-                        int index2 = Integer.parseInt(System.console().readLine()) - 1;
-
-                        new JuddiAdminService().registerLocalNodeToRemoteNode(authtoken, uddiNodeList.get(index), uddiNodeList.get(index2));
+        static void goMultiNode() throws Exception {
+                EntryPoitMultiNode.goMultiNode();
+        }
 
-                }
-                if (input.equals("34")) {
+        static void goSingleNode() throws Exception {
+                EntryPointSingleNode.goSingleNode();
 
-                        // System.out.println("33) View all register remote nodes on a jUDDI server");
-                        new JuddiAdminService().viewRemoteNodes(authtoken);
-                }
+        }
 
-                if (input.equals("35")) {
-                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
-                        for (int i = 0; i < uddiNodeList.size(); i++) {
-                                System.out.println("________________________________________________________________________________");
-                                System.out.println("Client name: " + uddiNodeList.get(i).getClientName());
-                                System.out.println("Node name: " + uddiNodeList.get(i).getName());
-                                System.out.println("Node description: " + uddiNodeList.get(i).getDescription());
-                                System.out.println("Transport: " + uddiNodeList.get(i).getProxyTransport());
-                                System.out.println(i + ") jUDDI URL: " + uddiNodeList.get(i).getJuddiApiUrl());
+        private static void goOfflineExamples() throws Exception {
+                String input = null;
+                do {
+                        System.out.println("____________________________");
+                        System.out.println("Offline/Code Examples (you'll want to look at the source for some of these");
+                        System.out.println("____________________________");
+                        System.out.println(" 1) Compare Two Binding/tModelInstanceInfo - QOS Code Example");
+                        System.out.println("2) Digitally sign a UDDI entity from a file.");
+                        System.out.println(" q) Quit/exit");
 
-                        }
+                        processOffline(input);
+                } while (!"q".equalsIgnoreCase(input));
 
-                }
-                if (input.equals("36")) {
-
-                        new JuddiAdminService().viewRemoveRemoteNode(authtoken);
-                        //System.out.println("35) UnRegister a node on a jUDDI server");
-                }
-                if (input.equals("37")) {
-                        new JuddiAdminService().viewReplicationConfig(authtoken);
-                }
-                if (input.equals("38")) {
-                        new JuddiAdminService().setReplicationConfig(authtoken);
-                }
-                if (input.equals("magic")) {
-                        //secret menu, setups up replication between juddi8080 and 9080 and adds a record or two on 8080
-                        //UDDISecurityPortType security = null;
-                        //UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-                        
-                       /* Transport transport = clerkManager.getTransport("default");
-                        security = transport.getUDDISecurityService();
-                       
-                       String uname = "root";
-                       
-                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
-                        getAuthTokenRoot.setUserID(uname);
-                        getAuthTokenRoot.setCred("root");
-                        authtoken = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
-                        System.out.println("Success!");*/
-                        
-                        //this setups up a replication config between the two nodes
-                        new JuddiAdminService().autoMagic();
+        }
 
-                        new UddiCreatebulk("default").publishBusiness(null, 1, 1);
-                        new UddiCreatebulk("uddi:another.juddi.apache.org:node2").publishBusiness(null, 1, 1);
-                }
-                if (input.equals("rep")) {
-                        new JuddiAdminService().printStatus();
+        private static void processOffline(String input) throws Exception {
+                if (input.equals("1")) {
+                        CompareByTModelInstanceInfoQOS.main(null);
                 }
-                if (input.equals("39")) {
+                if (input.equals("2")) {
                         new UddiDigitalSignatureFile().Fire(null, null, null);
                 }
-
         }
+
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPointSingleNode.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPointSingleNode.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPointSingleNode.java
new file mode 100644
index 0000000..1149302
--- /dev/null
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPointSingleNode.java
@@ -0,0 +1,471 @@
+/*
+ * Copyright 2015 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.
+ */
+package org.apache.juddi.samples;
+
+import java.util.List;
+import org.apache.juddi.api_v3.Node;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.config.UDDINode;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.uddi.api_v3.DiscardAuthToken;
+import org.uddi.api_v3.GetAuthToken;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ *
+ * @author alex
+ */
+public class EntryPointSingleNode {
+
+        static void goSingleNode() throws Exception {
+                String currentNode = "default";
+                UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                
+                List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+                System.out.println();
+
+                System.out.println("Nodes:");
+                for (int i = 0; i < uddiNodeList.size(); i++) {
+                        System.out.println((i + 1) + ") Node name: " + uddiNodeList.get(i).getName());
+                }
+                System.out.println("Destination Node: ");
+                int index = Integer.parseInt(System.console().readLine()) - 1;
+
+                currentNode = uddiNodeList.get(index).getName();
+                Transport transport = clerkManager.getTransport(currentNode);
+                authtoken = login(currentNode, transport);
+                String input = null;
+                do {
+                        System.out.println(" 1) Login");
+                        System.out.println(" 2) Print auth token");
+                        System.out.println(" 3) Logout (discard auth token)");
+                                
+                        
+                        System.out.println(" 4) Find Binding by QOS Parameters (Binding/tModelInstanceInfo)");
+                        System.out.println(" 5) Find Business by QOS Parameters (Binding/tModelInstanceInfo)");
+                        System.out.println(" 6) Find Service by QOS Parameters (Binding/tModelInstanceInfo)");
+                        System.out.println(" 7) UDDI Create Bulk (makes N business/services");
+                        
+                        System.out.println(" 8) UDDI Custody Transfer (within a single node)");
+                        System.out.println(" 9) UDDI Digital Signatures - Sign a Business");
+                        System.out.println("10) UDDI Digital Signatures - Sign a Service");
+                        System.out.println("11) UDDI Digital Signatures - Sign a tModel");
+                        System.out.println("12) UDDI Digital Signatures - Search for Signed Items");
+                        System.out.println("13) Find a Binding, lists all bindings for all services");
+                        System.out.println("14) Find Endpoints of a service (given the key)");
+                        System.out.println("15) Get the details of a service");
+                        System.out.println("16) Make a Key Generator tModel");
+                        System.out.println("17) Create a Business Relationship Between two users and two Businesses(Publisher Assertion)");
+                        System.out.println("18) Subscriptions - Asynchronous, listens for all changes");
+                        System.out.println("19) Subscriptions - Synchronous");
+                        System.out.println("20) WSDL2UDDI - Register a service from a WSDL document");
+                        System.out.println("21) WADL2UDDI - Register a service from a WADL document");
+                        
+                        
+                        System.out.println("22) Print Subscriptions");
+                        System.out.println("23) Delete a subscription");
+                        System.out.println("24) Delete all subscriptions");
+                        System.out.println("25) Subscriptions - Asynchronous, publisher assertion subscriptions");
+                        System.out.println("26) Replication - do_ping");
+                        System.out.println("27) Replication - get high watermarks");
+                        System.out.println("28) Replication - get change records");
+                        System.out.println("29) Replication - get failed change records (jUDDI only)");
+                        
+                        //local config management
+                        System.out.println("31) Quick add the jUDDI cloud node to *this's configuration file");
+                        System.out.println("32) Add a node to *this's configuration file");
+                        System.out.println("35) View all registered nodes for this client");
+                        
+                        //remote config management - juddi only
+                        System.out.println("33) Register a *this node to a jUDDI server");
+                        System.out.println("34) View all registered remote nodes on a jUDDI server");
+                        System.out.println("35) UnRegister a node on a jUDDI server");
+                        
+                        //juddi only
+                        System.out.println("37) View the replication config from the current jUDDI server");
+                        System.out.println("38) Set the replication config on a remote jUDDI server");
+                        System.out.println("39) Prints the current replication status of a given node");
+                      // System.out.println(" 3) jUDDI Admin service - Register a Node (quick add of the jUDDI cloud server)");
+
+                        System.out.println("q) quit");
+                        System.out.print(currentNode + "# ");
+                        input = System.console().readLine();
+                        try {
+                                processInput(input,currentNode, transport,clerkManager);
+                        } catch (Exception ex) {
+                                ex.printStackTrace();
+                        }
+                } while (!input.equalsIgnoreCase("q"));
+        }
+        private static String authtoken = null;
+
+        private static String login(String currentNode, Transport transport) throws Exception {
+                System.out.println("Options:");
+                System.out.println("1) Enter a username/password for auth token");
+                System.out.println("2) Enter a username/password for HTTP based logins");
+                System.out.println("3) Enter a username/password for use stored credentials");
+                String input = System.console().readLine();
+                if ("1".equalsIgnoreCase(input)) {
+                        UDDISecurityPortType security = null;
+                        security = transport.getUDDISecurityService();
+                        System.out.print(currentNode + "# username: ");
+                        String uname = System.console().readLine();
+                        char passwordArray[] = System.console().readPassword(currentNode + "# password: ");
+                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
+                        getAuthTokenRoot.setUserID(uname);
+                        getAuthTokenRoot.setCred(new String(passwordArray));
+                        String lauthtoken = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
+                        System.out.println("Success!");
+                        return lauthtoken;
+                } else if ("2".equalsIgnoreCase(input)) {
+                        
+                } else if ("3".equalsIgnoreCase(input)) {
+                } else {
+                        System.out.println("Aborted!");
+                }
+                return null;
+
+        }
+
+        private static void processInput(String input,String currentNode, Transport transport, UDDIClient client) throws Exception {
+                if (input == null) {
+                        return;
+                }
+                if (input.equals("1")) {
+                        login(currentNode, transport);
+                }
+               
+
+                if (input.equals("2")) {
+                        System.out.println("Token info: " + authtoken);
+                }
+                 if (input.equals("3")) {
+                        if (authtoken!=null){
+                        UDDISecurityPortType security = null;
+                        security = transport.getUDDISecurityService();
+                        DiscardAuthToken getAuthTokenRoot = new DiscardAuthToken();
+                        getAuthTokenRoot.setAuthInfo(authtoken);
+                        security.discardAuthToken(getAuthTokenRoot);
+                        System.out.println("Success!");}
+                }
+               
+                if (input.equals("4")) {
+                        SearchByQos.doFindBinding(authtoken);
+                }
+                if (input.equals("5")) {
+                        SearchByQos.doFindBusiness(authtoken);
+                }
+                if (input.equals("6")) {
+                        SearchByQos.doFindService(authtoken);
+                }
+                if (input.equals("7")) {
+                       
+                        System.out.print("businesses: ");
+                        int biz = Integer.parseInt(System.console().readLine());
+                        System.out.print("servicesPerBusiness: ");
+                        int svc = Integer.parseInt(System.console().readLine());
+                        new UddiCreatebulk(transport, false, currentNode).publishBusiness(authtoken, biz, svc);
+                }
+                if (input.equals("8")) {
+                        UDDISecurityPortType security = null;
+                        security = transport.getUDDISecurityService();
+
+                        System.out.print("Transfer from username: ");
+                        String uname = (System.console().readLine());
+                        char passwordArray[] = System.console().readPassword("password: ");
+                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
+                        getAuthTokenRoot.setUserID(uname);
+                        getAuthTokenRoot.setCred(new String(passwordArray));
+                        String authtokenFrom = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
+                        System.out.println("Success!");
+
+                        System.out.print("Transfer to username: ");
+                        String uname2 = (System.console().readLine());
+                        char passwordArray2[] = System.console().readPassword("password: ");
+                        getAuthTokenRoot = new GetAuthToken();
+                        getAuthTokenRoot.setUserID(uname2);
+                        getAuthTokenRoot.setCred(new String(passwordArray2));
+                        String authtokenFrom2 = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
+                        System.out.println("Success!");
+                        System.out.print("business/tModel key to transfer: ");
+                        String key = (System.console().readLine());
+                        new UddiCustodyTransfer().TransferBusiness(uname, authtokenFrom, uname2, authtokenFrom2, key);
+                }
+                if (input.equals("9")) {
+                        System.out.print("Business key to sign: ");
+                        String key = (System.console().readLine());
+                        new UddiDigitalSignatureBusiness().Fire(authtoken, key);
+                }
+                if (input.equals("10")) {
+                        System.out.print("Service key to sign: ");
+                        String key = (System.console().readLine());
+                        new UddiDigitalSignatureService().Fire(authtoken, key);
+                }
+                if (input.equals("11")) {
+                        System.out.print("tModel key to sign: ");
+                        String key = (System.console().readLine());
+                        new UddiDigitalSignatureTmodel().Fire(authtoken, key);
+                }
+                if (input.equals("12")) {
+                        new UddiDigitalSignatureSearch().Fire(authtoken);
+                }
+                if (input.equals("13")) {
+                        new UddiFindBinding().Fire(authtoken);
+                }
+                if (input.equals("14")) {
+                        System.out.print("Service key to parse the endpoints: ");
+                        String key = (System.console().readLine());
+                        new UddiFindEndpoints().Fire(authtoken, key);
+                }
+                if (input.equals("15")) {
+                        System.out.print("Service key: ");
+                        String key = (System.console().readLine());
+                        new UddiGetServiceDetails().Fire(authtoken, key);
+                }
+                if (input.equals("16")) {
+                        System.out.print("Get FQDN: ");
+                        String key = (System.console().readLine());
+                        new UddiKeyGenerator().Fire(authtoken, key);
+                }
+                if (input.equals("17")) {
+                        UDDISecurityPortType security = null;
+                       
+                        security = transport.getUDDISecurityService();
+
+                        System.out.print("1st Business username: ");
+                        String uname = (System.console().readLine());
+                        char passwordArray[] = System.console().readPassword("password: ");
+                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
+                        getAuthTokenRoot.setUserID(uname);
+                        getAuthTokenRoot.setCred(new String(passwordArray));
+                        String authtokenFrom = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
+                        System.out.println("Success!");
+
+                        System.out.print(uname + "'s business : ");
+                        String key = (System.console().readLine());
+
+                        System.out.print("2st Business username: ");
+                        String uname2 = (System.console().readLine());
+                        char passwordArray2[] = System.console().readPassword("password: ");
+                        getAuthTokenRoot = new GetAuthToken();
+                        getAuthTokenRoot.setUserID(uname2);
+                        getAuthTokenRoot.setCred(new String(passwordArray2));
+                        String authtokenFrom2 = security.getAuthToken(getAuthTokenRoot).getAuthInfo();
+                        System.out.println("Success!");
+
+                        System.out.print(uname2 + "'s business : ");
+                        String key2 = (System.console().readLine());
+
+                        System.out.print("relationship (parent-child, peer-peer,or identity) : ");
+                        String relationship = (System.console().readLine());
+                        new UddiRelatedBusinesses().Fire(key, authtokenFrom, key2, authtokenFrom2, relationship);
+                }
+                if (input.equals("18")) {
+                        new UddiSubscribe(client, currentNode, transport).Fire();
+
+                }
+                if (input.equals("19")) {
+                        System.out.print("Subscription key: ");
+                        String key = (System.console().readLine());
+                        System.out.println("Fetching results for the past 30 days...");
+                        new UddiSubscribeValidate(transport).go(authtoken, input);
+                }
+
+                if (input.equals("20")) {
+                        System.out.print("Path or URL to WSDL file: ");
+                        String url = (System.console().readLine());
+                        System.out.print("Business key to attach to: ");
+                        String key = (System.console().readLine());
+                        new WsdlImport().Fire(url, key, authtoken, transport);
+                }
+                if (input.equals("21")) {
+                        System.out.print("Path or URL to WADL file: ");
+                        String url = (System.console().readLine());
+                        System.out.print("Business key to attach to: ");
+                        String key = (System.console().readLine());
+                        new WadlImport().Fire(url, key, authtoken, transport);
+                }
+                
+                if (input.equals("22")) {
+                        new UddiSubscriptionManagement(transport).PrintSubscriptions(authtoken);
+                }
+                if (input.equals("23")) {
+                        System.out.print("Subscription key: ");
+                        String key2 = (System.console().readLine());
+                        new UddiSubscriptionManagement(transport).DeleteSubscription(authtoken, key2);
+                }
+                if (input.equals("24")) {
+                        new UddiSubscriptionManagement(transport).DeleteAllSubscriptions(authtoken);
+                }
+                if (input.equals("25")) {
+                        new UddiSubscribeAssertionStatus(transport).Fire(currentNode);
+
+                }
+                if (input.equals("26")) {
+                        //System.out.println("27) Replication - do_ping");
+
+                        new UddiReplication(client, currentNode).DoPing();
+
+                }
+                if (input.equals("27")) {
+                        //System.out.println("28) Replication - get high watermarks");
+                        new UddiReplication(client, currentNode).GetHighWatermarks();
+
+                }
+                if (input.equals("28")) {
+                        //System.out.println("29) Replication - get change records");
+                       
+                        System.out.print("Change ID to fetch: ");
+                        String id = (System.console().readLine());
+
+                        System.out.print("Node id of something in the replication graph: ");
+                        String src = (System.console().readLine());
+
+                        new UddiReplication(client, currentNode).GetChangeRecords(Long.parseLong(id), src);
+
+                }
+                if ("29".equals(input)){
+                        new JuddiAdminService(client, transport).dumpFailedReplicationRecords(authtoken);
+                }
+                 if (input.equals("31")) {
+                        
+                        new JuddiAdminService(client, transport).quickRegisterRemoteCloud(authtoken);
+                }
+               if (input.equals("31")) {
+                        //System.out.println("31) Quick add the jUDDI cloud node to *this's configuration file");
+                        new JuddiAdminService(client, transport).quickRegisterLocalCloud();
+                }
+                if (input.equals("32")) {
+                        // System.out.println("32) Add a node to *this's configuration file");
+                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        UDDINode node = new UDDINode();
+                        System.out.print("Name (must be unique: ");
+                        node.setClientName(System.console().readLine());
+                        node.setName(node.getClientName());
+                        System.out.print("Description: ");
+                        node.setDescription(System.console().readLine());
+
+                        node.setHomeJUDDI(false);
+                        System.out.print("Inquiry URL: ");
+                        node.setInquiryUrl(System.console().readLine());
+
+                        System.out.print("Inquiry REST URL (optional): ");
+                        node.setInquiryRESTUrl(System.console().readLine());
+
+                        System.out.print("jUDDI API URL (optional): ");
+                        node.setJuddiApiUrl(System.console().readLine());
+                        System.out.print("Custody Transfer URL: ");
+                        node.setCustodyTransferUrl(System.console().readLine());
+                        System.out.print("Publish URL: ");
+                        node.setPublishUrl(System.console().readLine());
+                        System.out.print("Replication URL: ");
+                        node.setReplicationUrl(System.console().readLine());
+                        System.out.print("Security URL: ");
+                        node.setSecurityUrl(System.console().readLine());
+                        System.out.print("Subscription URL: ");
+                        node.setSubscriptionUrl(System.console().readLine());
+
+                        System.out.print("Subscription Listener URL: ");
+                        node.setSubscriptionListenerUrl(System.console().readLine());
+
+                        System.out.print("Transport (defaults to JAXWS): ");
+                        node.setProxyTransport(System.console().readLine());
+                        if (node.getProxyTransport() == null || node.getProxyTransport().trim().equalsIgnoreCase("")) {
+                                node.setProxyTransport(org.apache.juddi.v3.client.transport.JAXWSTransport.class.getCanonicalName());
+                        }
+                        System.out.print("Factory Initial (optional): ");
+                        node.setFactoryInitial(System.console().readLine());
+                        System.out.print("Factory Naming Provider (optional): ");
+                        node.setFactoryNamingProvider(System.console().readLine());
+                        System.out.print("Factory URL Packages (optional): ");
+                        node.setFactoryURLPkgs(System.console().readLine());
+
+                        clerkManager.getClientConfig().addUDDINode(node);
+                        clerkManager.getClientConfig().saveConfig();
+                        System.out.println("Saved.");
+                }
+                if (input.equals("33")) {
+
+                        //System.out.println("32) Register a *this node to a jUDDI server");
+                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+                        System.out.println();
+
+                        System.out.println("Locally defined nodes:");
+                        for (int i = 0; i < uddiNodeList.size(); i++) {
+                                System.out.println("________________________________________________________________________________");
+                                System.out.println((i + 1) + ") Node name: " + uddiNodeList.get(i).getName());
+                                System.out.println((i + 1) + ") Node description: " + uddiNodeList.get(i).getDescription());
+                                System.out.println((i + 1) + ") Transport: " + uddiNodeList.get(i).getProxyTransport());
+                                System.out.println((i + 1) + ") jUDDI URL: " + uddiNodeList.get(i).getJuddiApiUrl());
+                        }
+                        System.out.println("Local Source Node: ");
+                        int index = Integer.parseInt(System.console().readLine()) - 1;
+
+                        System.out.println("Remote Destination(s):");
+                        for (int i = 0; i < uddiNodeList.size(); i++) {
+                                System.out.println("________________________________________________________________________________");
+                                System.out.println((i + 1) + ") Node name: " + uddiNodeList.get(i).getName());
+                                System.out.println((i + 1) + ") Node description: " + uddiNodeList.get(i).getDescription());
+                                System.out.println((i + 1) + ") Transport: " + uddiNodeList.get(i).getProxyTransport());
+                                System.out.println((i + 1) + ") jUDDI URL: " + uddiNodeList.get(i).getJuddiApiUrl());
+                        }
+                        System.out.println("Remote Destination Node to publish to: ");
+                        int index2 = Integer.parseInt(System.console().readLine()) - 1;
+
+                        new JuddiAdminService(client, transport).registerLocalNodeToRemoteNode(authtoken, uddiNodeList.get(index), uddiNodeList.get(index2));
+
+                }
+                if (input.equals("34")) {
+
+                        // System.out.println("33) View all register remote nodes on a jUDDI server");
+                        new JuddiAdminService(client, transport).viewRemoteNodes(authtoken);
+                }
+
+              /*  if (input.equals("35")) {
+                        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+                        for (int i = 0; i < uddiNodeList.size(); i++) {
+                                System.out.println("________________________________________________________________________________");
+                                System.out.println("Client name: " + uddiNodeList.get(i).getClientName());
+                                System.out.println("Node name: " + uddiNodeList.get(i).getName());
+                                System.out.println("Node description: " + uddiNodeList.get(i).getDescription());
+                                System.out.println("Transport: " + uddiNodeList.get(i).getProxyTransport());
+                                System.out.println(i + ") jUDDI URL: " + uddiNodeList.get(i).getJuddiApiUrl());
+
+                        }
+
+                }*/
+                if (input.equals("35")) {
+
+                        new JuddiAdminService(client, transport).viewRemoveRemoteNode(authtoken);
+                        //System.out.println("35) UnRegister a node on a jUDDI server");
+                }
+                if (input.equals("37")) {
+                        new JuddiAdminService(client, transport).viewReplicationConfig(authtoken, currentNode);
+                }
+                if (input.equals("38")) {
+                        new JuddiAdminService(client, transport).setReplicationConfig(authtoken);
+                }
+               
+                if (input.equals("39")) {
+                        new JuddiAdminService(client, transport).printStatus(transport, authtoken);
+                }
+                
+
+        }
+
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/c0354a44/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoitMultiNode.java
----------------------------------------------------------------------
diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoitMultiNode.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoitMultiNode.java
new file mode 100644
index 0000000..b017bb0
--- /dev/null
+++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/EntryPoitMultiNode.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2015 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.
+ */
+package org.apache.juddi.samples;
+
+import java.util.List;
+import org.apache.juddi.api_v3.Node;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.transport.Transport;
+
+/**
+ *
+ * @author alex
+ */
+public class EntryPoitMultiNode {
+
+        static void goMultiNode() throws Exception{
+              String currentNode = "default";
+                UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                
+                List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+                String input=null;
+                do {
+                        System.out.println("1) Replication - Setup replication between two nodes");
+                      
+                        System.out.println("2) Sets the replication between two instances of jUDDI on 8080 and 9080");
+                        System.out.println("3) Sets directed replication between 3 instances of jUDDI on 8080 and 8080, 10080");
+                        System.out.println("4) Prints the replication status for all nodes");
+
+
+                        System.out.println("q) quit");
+                        System.out.print("Selection: ");
+                        input = System.console().readLine();
+                        
+                                processInput(input,clerkManager);
+                        
+                } while (!input.equalsIgnoreCase("q"));
+        }
+
+        private static void processInput(String input, UDDIClient clerkManager) throws Exception{
+                 if (input.equals("1")) {
+                        // System.out.println("30) Replication - Setup replication between two nodes");
+                        new JuddiAdminService(null, null).setupReplication();
+
+                }
+                else  if (input.equals("2")) {
+                       
+                        new JuddiAdminService(null, null).autoMagic();
+                         List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+                         for (int i=0; i < uddiNodeList.size(); i++){
+                                 new UddiCreatebulk(uddiNodeList.get(i).getName()).publishBusiness(null, 1, 1);
+                         }
+                        //new UddiCreatebulk("uddi:another.juddi.apache.org:node2").publishBusiness(null, 1, 1);
+                }
+               else if (input.equals("3")) {
+                        new JuddiAdminService(clerkManager, null).autoMagicDirected();
+
+                        List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList();
+                         for (int i=0; i < uddiNodeList.size(); i++){
+                                 new UddiCreatebulk(uddiNodeList.get(i).getName()).publishBusiness(null, 1, 1);
+                         }
+                }
+               else if (input.equals("4")) {
+                        new JuddiAdminService(clerkManager, null).printStatus();
+                }
+                
+        }
+        
+}


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