JUDDI-993 sample for running juddi in an embedded server, with and without http access. also changes a few hopefully minor things in juddi core and client.
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
index 62439c5..b326645 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
@@ -192,6 +192,8 @@
                         if (this.clientConfig.isRegisterOnStartup()) {
                                 Runnable runnable = new BackGroundRegistration(this);
                                 Thread thread = new Thread(runnable);
+                                thread.setName("juddi background registration");
+                                thread.setDaemon(true);
                                 thread.start();
                         }
                 }
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
index 4ffd763..bd2f441 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
@@ -54,6 +54,11 @@
 		} else throw new IllegalArgumentException("clientName is a required argument");
 	}
 	
+        /**
+         * adds the named client, but only if it isn't registered already
+         * @param manager
+         * @return true if successful
+         */
 	public static boolean addClient(UDDIClient manager) {
 		if (!clients.containsKey(manager.getClientConfig().getClientName())) {
 			clients.put(manager.getClientConfig().getClientName(), manager);
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java
index a28ec16..bc2a0d7 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java
@@ -33,8 +33,8 @@
 public class UDDINode implements Serializable {
 
 	private static final long serialVersionUID = 5721040459195558161L;
-	private Properties properties;
-	private transient Transport transport;
+	private Properties properties=new Properties();
+        private transient Transport transport;
 	
 	private boolean isHomeJUDDI;
 	private String name;
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java
index de25edc..5886a5f 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java
@@ -17,8 +17,6 @@
 package org.apache.juddi.api.impl;

 

 import java.util.Date;

-import java.util.logging.Level;

-import java.util.logging.Logger;

 import javax.annotation.Resource;

 

 import javax.persistence.EntityManager;

@@ -81,6 +79,17 @@
                 }

                 init();

         }

+        

+        /**

+         * this method can be used to explicitly set a request context. this is useful

+         * in unit tests, embedded and in-vm scenarios only

+         * @param ctx 

+         * @since 3.3.8

+         */

+        public void setContext(WebServiceContext ctx) {

+                this.ctx = ctx;

+        }

+        

         private synchronized  void init() {

             try {

                 df = DatatypeFactory.newInstance();

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 83b7fab..4477e2d 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
@@ -135,7 +135,9 @@
  */

 @WebService(serviceName = "JUDDIApiService",

         endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType",

-        targetNamespace = "urn:juddi-apache-org:v3_service", wsdlLocation = "classpath:/juddi_api_v1.wsdl")

+        targetNamespace = "urn:juddi-apache-org:v3_service"

+        //, wsdlLocation = "classpath:/juddi_api_v1.wsdl"

+)

 public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortType {

 

         private Log log = LogFactory.getLog(this.getClass());

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java
index 24077c5..c2bf48f 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java
@@ -121,8 +121,7 @@
 		return getAuthToken(publisherId);

 	}

 	

-	public AuthToken getAuthToken(String publisherId)

-	throws DispositionReportFaultMessage {

+	public AuthToken getAuthToken(String publisherId) throws DispositionReportFaultMessage {

 	        long startTime = System.currentTimeMillis();

 

 		if (publisherId == null || publisherId.length() == 0)

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
index 9d7a788..4e6cc21 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
@@ -18,6 +18,7 @@
 

 import java.util.ArrayList;

 import java.util.List;

+import javax.jws.WebService;

 

 import javax.xml.ws.Holder;

 

@@ -29,9 +30,9 @@
 import org.uddi.v3_service.UDDIValueSetCachingPortType;

 import org.uddi.vscache_v3.ValidValue;

 

-//@WebService(serviceName="UDDIValueSetCachingService", 

-//			endpointInterface="org.uddi.v3_service.UDDIValueSetCachingPortType",

-//			targetNamespace = "urn:uddi-org:v3_service")

+@WebService(serviceName="UDDIValueSetCachingService", 

+			endpointInterface="org.uddi.v3_service.UDDIValueSetCachingPortType",

+			targetNamespace = "urn:uddi-org:v3_service")

 public class UDDIValueSetCachingImpl extends AuthenticatedService implements UDDIValueSetCachingPortType {

 

         private static Log logger = LogFactory.getLog(UDDIValueSetCachingImpl.class);

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
index 23971f4..59f2ebe 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
@@ -21,6 +21,7 @@
 import java.util.Iterator;

 import java.util.List;

 import java.util.Set;

+import javax.jws.WebService;

 import javax.persistence.EntityManager;

 import javax.persistence.EntityTransaction;

 import static org.apache.juddi.api.impl.AuthenticatedService.logger;

@@ -72,6 +73,8 @@
  * @see AbstractSimpleValidator

  * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>

  */

+@WebService(serviceName="UDDIValueSetCachingService", endpointInterface = "org.uddi.v3_service.UDDIValueSetValidationPortType"

+       , targetNamespace = "urn:uddi-org:api_v3_portType")

 public class UDDIValueSetValidationImpl extends AuthenticatedService implements

      UDDIValueSetValidationPortType {

 

diff --git a/juddi-core/src/main/java/org/apache/juddi/v3/auth/HTTPContainerAuthenticator.java b/juddi-core/src/main/java/org/apache/juddi/v3/auth/HTTPContainerAuthenticator.java
index 71b9454..5a7cfcb 100644
--- a/juddi-core/src/main/java/org/apache/juddi/v3/auth/HTTPContainerAuthenticator.java
+++ b/juddi-core/src/main/java/org/apache/juddi/v3/auth/HTTPContainerAuthenticator.java
@@ -92,8 +92,8 @@
                                 log.warn("Publisher \"" + user + "\" was not found in the database, adding the publisher in on the fly.");
                                 publisher = new Publisher();
                                 publisher.setAuthorizedName(user);
-                                publisher.setIsAdmin("false");
-                                publisher.setIsEnabled("true");
+                                publisher.setIsAdmin(false);
+                                publisher.setIsEnabled(true);
                                 publisher.setMaxBindingsPerService(MaxBindingsPerService);
                                 publisher.setMaxBusinesses(MaxBusinesses);
                                 publisher.setMaxServicesPerBusiness(MaxServicesPerBusiness);
diff --git a/juddi-examples/create-partition/src/main/java/org/apache/juddi/example/partition/SimpleCreateTmodelPartition.java b/juddi-examples/create-partition/src/main/java/org/apache/juddi/example/partition/SimpleCreateTmodelPartition.java
index 24d8c9c..0bf40b9 100644
--- a/juddi-examples/create-partition/src/main/java/org/apache/juddi/example/partition/SimpleCreateTmodelPartition.java
+++ b/juddi-examples/create-partition/src/main/java/org/apache/juddi/example/partition/SimpleCreateTmodelPartition.java
@@ -16,16 +16,13 @@
  */
 package org.apache.juddi.example.partition;
 
-import java.util.Properties;
 import javax.xml.ws.BindingProvider;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.juddi.v3.client.config.UDDIClerk;
 
 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.AuthToken;
-import org.uddi.api_v3.BindingTemplates;
 import org.uddi.api_v3.CategoryBag;
 import org.uddi.api_v3.GetAuthToken;
 import org.uddi.api_v3.KeyedReference;
@@ -46,7 +43,6 @@
 
         private static UDDISecurityPortType security = null;
         private static UDDIPublicationPortType publish = null;
-
         private static UDDIClient uddiClient = null;
 
         /**
diff --git a/juddi-examples/juddi-embedded/juddi-server.xml b/juddi-examples/juddi-embedded/juddi-server.xml
new file mode 100644
index 0000000..f0af7cb
--- /dev/null
+++ b/juddi-examples/juddi-embedded/juddi-server.xml
@@ -0,0 +1,225 @@
+<?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.
+*
+*/ -->
+<!--
+################################################################
+#                 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:8080/juddiv3</baseurl>
+			<baseurlsecure>https://localhost:8443/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 -->
+		<nodeId>uddi:juddi.apache.org:node1</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:juddi.apache.org:businesses-asf</businessId>
+			<partition>uddi: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>100</maxBusinessesPerPublisher>
+		<maxServicesPerBusiness>100</maxServicesPerBusiness>
+		<maxBindingsPerService>100</maxBindingsPerService>
+		<maxTModelsPerPublisher>100</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.v3.client.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
+                                
+                                See also, the Jboss Authenticator
+				-->
+				<class>org.apache.juddi.v3.auth.JUDDIAuthenticator</class>
+				<!-- other settings (mostly used by Ldap based auth mods
+				url
+				initialcontext
+				style
+				ldapexp
+				-->
+			</authenticator>
+
+			<token>
+				<!-- Time in minutes to expire tokes after inactivity-->
+				<Timeout>30</Timeout>
+				<!-- As of 3.1.5 Duration of time for tokens to expire, regardless of inactivity -->
+				<Expiration>30</Expiration>
+				<!-- As of 3.2, when set to true, tokens can only be used from the same IP address they were issued to -->
+				<enforceSameIPRule>true</enforceSameIPRule>
+			</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">Test</trustStorePassword>
+
+                            <checkTimestamps>true</checkTimestamps>
+                            <checkTrust>true</checkTrust>
+                            <checkRevocationCRL>false</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>
+	</juddi>
+</config>
\ No newline at end of file
diff --git a/juddi-examples/juddi-embedded/juddi-users.xml b/juddi-examples/juddi-embedded/juddi-users.xml
new file mode 100644
index 0000000..44c07be
--- /dev/null
+++ b/juddi-examples/juddi-embedded/juddi-users.xml
@@ -0,0 +1,22 @@
+<?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.
+*
+*/ -->
+<juddi-users>
+	<user userid="anou_mana" password="password" />
+	<user userid="bozo" password="clown" />
+	<user userid="sviens" password="password" />
+</juddi-users>
\ No newline at end of file
diff --git a/juddi-examples/juddi-embedded/pom.xml b/juddi-examples/juddi-embedded/pom.xml
new file mode 100644
index 0000000..7b11085
--- /dev/null
+++ b/juddi-examples/juddi-embedded/pom.xml
@@ -0,0 +1,35 @@
+<?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/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.8-SNAPSHOT</version>
+    </parent>
+    <artifactId>juddi-embedded</artifactId>
+    <packaging>jar</packaging>
+    <name>jUDDI Embedded Example</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedNoWeb.java b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedNoWeb.java
new file mode 100644
index 0000000..dfd52e8
--- /dev/null
+++ b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedNoWeb.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2020 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.example.juddi.embedded;
+
+import java.io.File;
+import static org.apache.juddi.config.AppConfig.JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.Name;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This sample shows you how to interact with jUDDI without exposing any web
+ * services to the network. It's basically a standalone java process that can
+ * used for any purpose.
+ *
+ * @author Alex O'Ree
+ */
+public class EmbeddedNoWeb {
+
+    public static void main(String[] args) throws Exception {
+        
+
+        //access the client as normal using invm transports
+        File cfg = new File("juddi-server.xml").getCanonicalFile();
+        System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, cfg.getCanonicalPath());
+        cfg = new File("uddi-invm.xml");
+        UDDIClient uddiClientEmdded = new UDDIClient(cfg.getCanonicalPath());
+        uddiClientEmdded.start();
+        Transport transport = uddiClientEmdded.getTransport("default");
+        UDDISecurityPortType clientSecurity = transport.getUDDISecurityService();
+        UDDIInquiryPortType clientInquiry = transport.getUDDIInquiryService();
+
+        System.out.println("started, verifying embedded access");
+        FindBusiness fb = new FindBusiness();
+        fb.setMaxRows(200);
+        fb.setListHead(0);
+        // fb.setAuthInfo(GetToken());
+        org.uddi.api_v3.FindQualifiers fq = new org.uddi.api_v3.FindQualifiers();
+        fq.getFindQualifier().add(UDDIConstants.CASE_INSENSITIVE_MATCH);
+        fq.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+        fq.getFindQualifier().add(UDDIConstants.SORT_BY_NAME_ASC);
+        fb.setFindQualifiers(fq);
+        Name searchname = new Name();
+        searchname.setLang("%");
+        searchname.setValue("%");
+        fb.getName().add(searchname);
+
+        BusinessList result = clientInquiry.findBusiness(fb);
+        System.out.println(result.getBusinessInfos().getBusinessInfo().size() + " businesses available");
+        uddiClientEmdded.stop();
+        
+        //this appears to hang, there's a background thread spawned somewhere that doesn't die
+
+    }
+}
diff --git a/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedNoWebNoClerk.java b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedNoWebNoClerk.java
new file mode 100644
index 0000000..69f5e07
--- /dev/null
+++ b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedNoWebNoClerk.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2020 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.example.juddi.embedded;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.juddi.Registry;
+import org.apache.juddi.api.impl.JUDDIApiImpl;
+import org.apache.juddi.api.impl.UDDICustodyTransferImpl;
+import org.apache.juddi.api.impl.UDDIInquiryImpl;
+import org.apache.juddi.api.impl.UDDIPublicationImpl;
+import org.apache.juddi.api.impl.UDDISecurityImpl;
+import org.apache.juddi.api.impl.UDDISubscriptionImpl;
+import org.apache.juddi.api.impl.UDDIValueSetCachingImpl;
+import org.apache.juddi.api.impl.UDDIValueSetValidationImpl;
+import static org.apache.juddi.config.AppConfig.JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.Name;
+
+/**
+ * In this case, we are not using juddi's client/clerk/transport apis, just
+ * using the instance classes directly
+ *
+ * @author Alex O'Ree
+ */
+public class EmbeddedNoWebNoClerk {
+
+    public static void main(String[] args) throws Exception {
+        //tell juddi to load this server configuration file from disk
+        File cfg = new File("juddi-server.xml").getCanonicalFile();
+        System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, cfg.getCanonicalPath());
+
+        //start up the services
+        Registry.start();
+        //note these instance classes will be used to server web requests
+        //do not share embedded access with web access classes due to context
+        //sharing issues.
+        JUDDIApiImpl juddi = new JUDDIApiImpl();
+        UDDIPublicationImpl publish = new UDDIPublicationImpl();
+        UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
+        UDDISecurityImpl security = new UDDISecurityImpl();
+        UDDISubscriptionImpl subscription = new UDDISubscriptionImpl();
+        UDDICustodyTransferImpl custody = new UDDICustodyTransferImpl();
+        UDDIValueSetCachingImpl cache = new UDDIValueSetCachingImpl();
+        UDDIValueSetValidationImpl validation = new UDDIValueSetValidationImpl();
+
+        //clients within this process can use invm transport
+        {
+            System.out.println("started, verifying embedded access");
+            FindBusiness fb = new FindBusiness();
+            fb.setMaxRows(200);
+            fb.setListHead(0);
+            // fb.setAuthInfo(GetToken());
+            org.uddi.api_v3.FindQualifiers fq = new org.uddi.api_v3.FindQualifiers();
+            fq.getFindQualifier().add(UDDIConstants.CASE_INSENSITIVE_MATCH);
+            fq.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+            fq.getFindQualifier().add(UDDIConstants.SORT_BY_NAME_ASC);
+            fb.setFindQualifiers(fq);
+            Name searchname = new Name();
+            searchname.setLang("%");
+            searchname.setValue("%");
+            fb.getName().add(searchname);
+
+            BusinessList result = inquiry.findBusiness(fb);
+            System.out.println(result.getBusinessInfos().getBusinessInfo().size() + " businesses available");
+            //uddiClientHttp.stop();
+        }
+
+        //for cases that require authentication...
+        //the authenticator should work the same as it is in tomcat
+        //except if you use http style authentication. in this case, you'll have 
+        //to do this....
+        //Set<String> roles = new HashSet<String>();
+        //Note: juddi doesn't use servlet container roles
+        //publish.setContext(new MyWebContext("uddi", roles));
+
+        System.out.println("ready, press enter to stop");
+        //  System.console().readLine();
+
+        //shutdown
+        Registry.stop();
+    }
+}
diff --git a/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedWithWeb.java b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedWithWeb.java
new file mode 100644
index 0000000..6f2d719
--- /dev/null
+++ b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/EmbeddedWithWeb.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2020 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.example.juddi.embedded;
+
+import com.sun.net.httpserver.HttpServer;
+import java.io.File;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import javax.xml.ws.Endpoint;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.juddi.Registry;
+import org.apache.juddi.api.impl.JUDDIApiImpl;
+import org.apache.juddi.api.impl.UDDICustodyTransferImpl;
+import org.apache.juddi.api.impl.UDDIInquiryImpl;
+import org.apache.juddi.api.impl.UDDIPublicationImpl;
+import org.apache.juddi.api.impl.UDDISecurityImpl;
+import org.apache.juddi.api.impl.UDDISubscriptionImpl;
+import org.apache.juddi.api.impl.UDDIValueSetCachingImpl;
+import org.apache.juddi.api.impl.UDDIValueSetValidationImpl;
+import static org.apache.juddi.config.AppConfig.JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.config.UDDIClientContainer;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.Name;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * Another example using juddi as an embedded standalone process.
+ * <ul>
+ * <li>This will only use uddi style authentication (http auth not
+ * supported).</li>
+ * <li>juddi gui will not start embedded using this sample code.</li>
+ * <li>juddi rest services will not start with this sample code, only the soap
+ * services</li>
+ * </ul>
+ *
+ * @author Alex O'Ree
+ */
+public class EmbeddedWithWeb {
+    
+    public static void main(String[] args) throws Exception {
+
+        //tell juddi to load this server configuration file from disk
+        File cfg = new File("juddi-server.xml").getCanonicalFile();
+        System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, cfg.getCanonicalPath());
+
+        //start up the services
+        Registry.start();
+        //note these instance classes will be used to server web requests
+        //do not share embedded access with web access classes due to context
+        //sharing issues.
+        JUDDIApiImpl juddi = new JUDDIApiImpl();
+        UDDIPublicationImpl publish = new UDDIPublicationImpl();
+        UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
+        UDDISecurityImpl security = new UDDISecurityImpl();
+        UDDISubscriptionImpl subscription = new UDDISubscriptionImpl();
+        UDDICustodyTransferImpl custody = new UDDICustodyTransferImpl();
+        UDDIValueSetCachingImpl cache = new UDDIValueSetCachingImpl();
+        UDDIValueSetValidationImpl validation = new UDDIValueSetValidationImpl();
+        
+        
+
+        final HttpServer httpServer = HttpServer.create(new InetSocketAddress(InetAddress.getByName("0.0.0.0"), 8080), 16);
+        //TODO tls setup
+        
+        Endpoint endpointJuddi = Endpoint.create(juddi);
+        Endpoint endpointPublish = Endpoint.create(publish);
+        Endpoint endpointInquiry = Endpoint.create(inquiry);
+        Endpoint endpointSecurity = Endpoint.create(security);
+        Endpoint endpointSubscription = Endpoint.create(subscription);
+        Endpoint endpointCustody = Endpoint.create(custody);
+        Endpoint endpointCache = Endpoint.create(cache);
+        Endpoint endpointValidation = Endpoint.create(validation);
+        
+        endpointJuddi.publish(httpServer.createContext("/juddiv3/services/juddi"));
+        endpointPublish.publish(httpServer.createContext("/juddiv3/services/publish"));
+        endpointInquiry.publish(httpServer.createContext("/juddiv3/services/inquiry"));
+        endpointSecurity.publish(httpServer.createContext("/juddiv3/services/security"));
+        endpointSubscription.publish(httpServer.createContext("/juddiv3/services/subscription"));
+        endpointCustody.publish(httpServer.createContext("/juddiv3/services/custody-transfer"));
+        endpointCache.publish(httpServer.createContext("/juddiv3/services/valueset-caching"));
+        endpointValidation.publish(httpServer.createContext("/juddiv3/services/valueset-validation"));
+        
+        httpServer.start();
+        System.out.println("started, verifying http access");
+
+        //clients can access the services via http
+        {
+            cfg = new File("uddi-http.xml");
+            UDDIClient uddiClientHttp = new UDDIClient(cfg.getCanonicalPath());
+            uddiClientHttp.start();
+            Transport transport = uddiClientHttp.getTransport("default");
+            UDDISecurityPortType clientSecurity = transport.getUDDISecurityService();
+            UDDIInquiryPortType clientInquiry = transport.getUDDIInquiryService();
+            
+            System.out.println("started, verifying embedded access");
+            FindBusiness fb = new FindBusiness();
+            fb.setMaxRows(200);
+            fb.setListHead(0);
+            // fb.setAuthInfo(GetToken());
+            org.uddi.api_v3.FindQualifiers fq = new org.uddi.api_v3.FindQualifiers();
+            fq.getFindQualifier().add(UDDIConstants.CASE_INSENSITIVE_MATCH);
+            fq.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+            fq.getFindQualifier().add(UDDIConstants.SORT_BY_NAME_ASC);
+            fb.setFindQualifiers(fq);
+            Name searchname = new Name();
+            searchname.setLang("%");
+            searchname.setValue("%");
+            fb.getName().add(searchname);
+            
+            BusinessList result = clientInquiry.findBusiness(fb);
+            System.out.println(result.getBusinessInfos().getBusinessInfo().size() + " businesses available");
+            uddiClientHttp.stop();
+        }
+
+        //clients within this process can use invm transport
+        {
+            
+            cfg = new File("uddi-invm.xml");
+            UDDIClient uddiClientHttp = new UDDIClient(cfg.getCanonicalPath());
+            uddiClientHttp.start();
+            Transport transport = uddiClientHttp.getTransport("default");
+            UDDISecurityPortType clientSecurity = transport.getUDDISecurityService();
+            UDDIInquiryPortType clientInquiry = transport.getUDDIInquiryService();
+            
+            System.out.println("started, verifying embedded access");
+            FindBusiness fb = new FindBusiness();
+            fb.setMaxRows(200);
+            fb.setListHead(0);
+            // fb.setAuthInfo(GetToken());
+            org.uddi.api_v3.FindQualifiers fq = new org.uddi.api_v3.FindQualifiers();
+            fq.getFindQualifier().add(UDDIConstants.CASE_INSENSITIVE_MATCH);
+            fq.getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+            fq.getFindQualifier().add(UDDIConstants.SORT_BY_NAME_ASC);
+            fb.setFindQualifiers(fq);
+            Name searchname = new Name();
+            searchname.setLang("%");
+            searchname.setValue("%");
+            fb.getName().add(searchname);
+            
+            BusinessList result = clientInquiry.findBusiness(fb);
+            System.out.println(result.getBusinessInfos().getBusinessInfo().size() + " businesses available");
+            //uddiClientHttp.stop();
+        }
+        
+        System.out.println("ready, press enter to stop");
+      //  System.console().readLine();
+
+        //shutdown
+        endpointJuddi.stop();
+        endpointPublish.stop();
+        endpointInquiry.stop();
+        endpointSecurity.stop();
+        endpointSubscription.stop();
+        endpointCustody.stop();
+        endpointCache.stop();
+        endpointValidation.stop();
+        httpServer.stop(0);
+    }
+}
diff --git a/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/MyWebContext.java b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/MyWebContext.java
new file mode 100644
index 0000000..b597934
--- /dev/null
+++ b/juddi-examples/juddi-embedded/src/main/java/org/apache/juddi/example/juddi/embedded/MyWebContext.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2020 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.example.juddi.embedded;
+
+import java.security.Principal;
+import java.util.Set;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author Alex
+ */
+public class MyWebContext implements WebServiceContext {
+
+    String user;
+    Set<String> roles;
+
+    public MyWebContext(String username, Set<String> roles) {
+        this.user = username;
+        this.roles = roles;
+    }
+
+    @Override
+    public MessageContext getMessageContext() {
+        return null;
+    }
+
+    @Override
+    public Principal getUserPrincipal() {
+        return new Principal() {
+            @Override
+            public String getName() {
+                return user;
+            }
+        };
+    }
+
+    @Override
+    public boolean isUserInRole(String arg0) {
+        return roles.contains(arg0);
+    }
+
+    @Override
+    public EndpointReference getEndpointReference(Element... arg0) {
+        return null;
+    }
+
+    @Override
+    public <T extends EndpointReference> T getEndpointReference(Class<T> arg0, Element... arg1) {
+        return null;
+    }
+
+}
diff --git a/juddi-examples/juddi-embedded/src/main/resources/META-INF/persistence.xml b/juddi-examples/juddi-embedded/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..725e81e
--- /dev/null
+++ b/juddi-examples/juddi-embedded/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,118 @@
+<?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.
+*
+*/ -->
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="juddiDatabase" transaction-type="RESOURCE_LOCAL">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <!-- entity classes -->
+    <class>org.apache.juddi.model.Address</class>
+    <class>org.apache.juddi.model.AddressLine</class>
+    <class>org.apache.juddi.model.AuthToken</class>
+    <class>org.apache.juddi.model.BindingCategoryBag</class>
+    <class>org.apache.juddi.model.BindingDescr</class>
+    <class>org.apache.juddi.model.BindingTemplate</class>
+    <class>org.apache.juddi.model.BusinessCategoryBag</class>
+    <class>org.apache.juddi.model.BusinessDescr</class>
+    <class>org.apache.juddi.model.BusinessEntity</class>
+    <class>org.apache.juddi.model.BusinessIdentifier</class>
+    <class>org.apache.juddi.model.BusinessName</class>
+    <class>org.apache.juddi.model.BusinessService</class>
+    <class>org.apache.juddi.model.CanonicalizationMethod</class>
+    <class>org.apache.juddi.model.CategoryBag</class>
+    <class>org.apache.juddi.model.Clerk</class>
+    <class>org.apache.juddi.model.ClientSubscriptionInfo</class>
+    <class>org.apache.juddi.model.Contact</class>
+    <class>org.apache.juddi.model.ContactDescr</class>
+    <class>org.apache.juddi.model.DiscoveryUrl</class>
+    <class>org.apache.juddi.model.Email</class>
+    <class>org.apache.juddi.model.InstanceDetailsDescr</class>
+    <class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
+    <class>org.apache.juddi.model.KeyedReference</class>
+    <class>org.apache.juddi.model.KeyedReferenceGroup</class>
+    <class>org.apache.juddi.model.KeyDataValue</class>
+    <class>org.apache.juddi.model.KeyInfo</class>
+    <class>org.apache.juddi.model.Node</class>
+    <class>org.apache.juddi.model.ObjectType</class>
+    <class>org.apache.juddi.model.ObjectTypeContent</class>
+    <class>org.apache.juddi.model.OverviewDoc</class>
+    <class>org.apache.juddi.model.OverviewDocDescr</class>
+    <class>org.apache.juddi.model.PersonName</class>
+    <class>org.apache.juddi.model.Phone</class>
+    <class>org.apache.juddi.model.Publisher</class>
+    <class>org.apache.juddi.model.PublisherAssertion</class>
+    <class>org.apache.juddi.model.PublisherAssertionId</class>
+    <class>org.apache.juddi.model.Reference</class>
+    <class>org.apache.juddi.model.ServiceCategoryBag</class>
+    <class>org.apache.juddi.model.ServiceDescr</class>
+    <class>org.apache.juddi.model.ServiceName</class>
+    <class>org.apache.juddi.model.ServiceProjection</class>
+    <class>org.apache.juddi.model.ServiceProjectionId</class>
+    <class>org.apache.juddi.model.Signature</class>
+    <class>org.apache.juddi.model.SignatureMethod</class>
+    <class>org.apache.juddi.model.SignatureTransform</class>
+    <class>org.apache.juddi.model.SignatureTransformDataValue</class>
+    <class>org.apache.juddi.model.SignatureValue</class>
+    <class>org.apache.juddi.model.SignedInfo</class>
+    <class>org.apache.juddi.model.Subscription</class>
+    <class>org.apache.juddi.model.SubscriptionChunkToken</class>
+    <class>org.apache.juddi.model.SubscriptionMatch</class>
+    <class>org.apache.juddi.model.TempKey</class>
+    <class>org.apache.juddi.model.TempKeyPK</class>
+    <class>org.apache.juddi.model.Tmodel</class>
+    <class>org.apache.juddi.model.TmodelCategoryBag</class>
+    <class>org.apache.juddi.model.TmodelDescr</class>
+    <class>org.apache.juddi.model.TmodelIdentifier</class>
+    <class>org.apache.juddi.model.TmodelInstanceInfo</class>
+    <class>org.apache.juddi.model.TmodelInstanceInfoDescr</class>
+    <class>org.apache.juddi.model.TransferToken</class>
+    <class>org.apache.juddi.model.TransferTokenKey</class>
+    <class>org.apache.juddi.model.UddiEntity</class>
+    <class>org.apache.juddi.model.UddiEntityPublisher</class>
+    <class>org.apache.juddi.model.ValueSetValues</class>
+    <class>org.apache.juddi.model.ChangeRecord</class>
+    <class>org.apache.juddi.model.Operator</class>
+    <class>org.apache.juddi.model.ReplicationConfiguration</class>
+    <class>org.apache.juddi.model.Edge</class>
+    <class>org.apache.juddi.model.ControlMessage</class>
+    <class>org.apache.juddi.model.ReplicationConfigurationNode</class>
+    <class>org.apache.juddi.model.EdgeReceiverAlternate</class>
+    <properties>
+      <property name="hibernate.archive.autodetection" value="class"/>
+      <property name="hibernate.hbm2ddl.auto" value="update"/>
+      <property name="hibernate.show_sql" value="false"/>
+      <!-- derby connection properties -->
+      <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
+      <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/>
+      <property name="hibernate.connection.url" value="jdbc:derby:memory:juddi-derby-test-db;create=true"/>
+      <property name="hibernate.connection.username" value=""/>
+      <property name="hibernate.connection.password" value=""/>
+      <!--  mysql connection properties 
+
+      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
+      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
+      <property name="hibernate.connection.username" value="juddiv3" />
+      <property name="hibernate.connection.password" value="" />
+      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/juddiv3" />
+-->
+      <!-- connection pool properties -->
+      <!--<property name = "hibernate.show_sql" value = "true" />-->
+      <property name="hibernate.dbcp.maxActive" value="100"/>
+      <property name="hibernate.dbcp.maxIdle" value="30"/>
+      <property name="hibernate.dbcp.maxWait" value="10000"/>
+    </properties>
+  </persistence-unit>
+</persistence>
diff --git a/juddi-examples/juddi-embedded/src/main/resources/META-INF/uddi-client.xml b/juddi-examples/juddi-embedded/src/main/resources/META-INF/uddi-client.xml
new file mode 100644
index 0000000..e7455d2
--- /dev/null
+++ b/juddi-examples/juddi-embedded/src/main/resources/META-INF/uddi-client.xml
@@ -0,0 +1,53 @@
+<?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.
+ *
+ -->
+<uddi xmlns="urn:juddi-apache-org:v3_client" xsi:schemaLocation="uddi-client classpath:xsd/uddi-client.xsd"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+        <reloadDelay>5000</reloadDelay>
+        <client name="example-client">
+                <nodes>
+                        <node>
+                                <!-- required 'default' node -->
+                                <name>default</name> 
+                                <properties>
+                                        <property name="serverName" value="localhost"/>
+                                        <property name="serverPort" value="8080"/>
+                                        <!-- 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>Main jUDDI node</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>
+                        </node>
+                </nodes>
+                <clerks>
+                        <clerk node="default" name="defaultClerk" password="" publisher="username"></clerk>
+                        
+                </clerks>
+        </client>
+</uddi>
diff --git a/juddi-examples/juddi-embedded/truststore.jks b/juddi-examples/juddi-embedded/truststore.jks
new file mode 100644
index 0000000..e751384
--- /dev/null
+++ b/juddi-examples/juddi-embedded/truststore.jks
Binary files differ
diff --git a/juddi-examples/juddi-embedded/uddi-http.xml b/juddi-examples/juddi-embedded/uddi-http.xml
new file mode 100644
index 0000000..67ce554
--- /dev/null
+++ b/juddi-examples/juddi-embedded/uddi-http.xml
@@ -0,0 +1,93 @@
+<?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.
+ *
+ -->
+<uddi xmlns="urn:juddi-apache-org:v3_client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="classpath:/xsd/uddi-client.xsd">
+    <reloadDelay>5000</reloadDelay>
+    <client name="example-client">
+		<nodes>
+			<node>
+			    <!-- required 'default' node -->
+				<name>default</name> 
+                <properties>
+                    <property name="serverName" value="localhost"/>
+                    <property name="serverPort" value="8080"/>
+					<!-- 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>Main jUDDI node</description>
+				<!-- JAX-WS Transport -->
+				<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
+				<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
+				<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
+				<inquiryRESTUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryRest</inquiryRESTUrl>
+		        <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
+		        <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
+				<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
+				<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
+				<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
+			</node>
+		</nodes>
+		<signature>
+			<!-- signing stuff -->
+			<signingKeyStorePath>keystore.jks</signingKeyStorePath>
+			<signingKeyStoreType>JKS</signingKeyStoreType>
+			<signingKeyStoreFilePassword 
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</signingKeyStoreFilePassword>
+			<signingKeyPassword
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</signingKeyPassword>
+			<signingKeyAlias>my special key</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 
+			Used whenever someone views an entity that is signed and validation is required	-->
+			<!-- if this doesn't exist or is incorrect, the client will atempt to load the standard jdk trust store-->
+			<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>
+			<keyInfoInclusionSubjectDN>false</keyInfoInclusionSubjectDN>
+			<keyInfoInclusionSerial>false</keyInfoInclusionSerial>
+			<keyInfoInclusionBase64PublicKey>true</keyInfoInclusionBase64PublicKey>
+			<digestMethod>http://www.w3.org/2000/09/xmldsig#sha1</digestMethod>
+		</signature>
+		<subscriptionCallbacks>
+			<keyDomain>uddi:somebusiness</keyDomain>
+			<listenUrl>http://MyHostname:4444/callback</listenUrl>
+			<autoRegisterBindingTemplate>false</autoRegisterBindingTemplate>
+			<autoRegisterBusinessServiceKey>uddi:somebusiness:someservicekey</autoRegisterBusinessServiceKey>
+			<signatureBehavior>DoNothing</signatureBehavior>
+			<!--valid values are AbortIfSigned,Sign,DoNothing,SignOnlyIfParentIsntSigned, default is DoNothing-->
+		</subscriptionCallbacks>
+		<XtoWsdl>
+			<IgnoreSSLErrors>false</IgnoreSSLErrors>
+		</XtoWsdl>
+	</client>
+</uddi>
diff --git a/juddi-examples/juddi-embedded/uddi-invm.xml b/juddi-examples/juddi-embedded/uddi-invm.xml
new file mode 100644
index 0000000..71365c5
--- /dev/null
+++ b/juddi-examples/juddi-embedded/uddi-invm.xml
@@ -0,0 +1,83 @@
+<?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.
+ *
+ -->
+<uddi xmlns="urn:juddi-apache-org:v3_client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="classpath:/xsd/uddi-client.xsd">
+    <reloadDelay>5000</reloadDelay>
+    <client name="example-client">
+		<nodes>
+			<node>
+			    <!-- required 'default' node -->
+				<name>default</name> 
+                <!-- In VM Transport Settings -->
+                <proxyTransport>org.apache.juddi.v3.client.transport.InVMTransport</proxyTransport>
+                <custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
+                <inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
+				<publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
+				<securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
+                <subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
+                <subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
+                <juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl>
+                
+			</node>
+		</nodes>
+		<signature>
+			<!-- signing stuff -->
+			<signingKeyStorePath>keystore.jks</signingKeyStorePath>
+			<signingKeyStoreType>JKS</signingKeyStoreType>
+			<signingKeyStoreFilePassword 
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</signingKeyStoreFilePassword>
+			<signingKeyPassword
+				isPasswordEncrypted="false" 
+				cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</signingKeyPassword>
+			<signingKeyAlias>my special key</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 
+			Used whenever someone views an entity that is signed and validation is required	-->
+			<!-- if this doesn't exist or is incorrect, the client will atempt to load the standard jdk trust store-->
+			<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>
+			<keyInfoInclusionSubjectDN>false</keyInfoInclusionSubjectDN>
+			<keyInfoInclusionSerial>false</keyInfoInclusionSerial>
+			<keyInfoInclusionBase64PublicKey>true</keyInfoInclusionBase64PublicKey>
+			<digestMethod>http://www.w3.org/2000/09/xmldsig#sha1</digestMethod>
+		</signature>
+		<subscriptionCallbacks>
+			<keyDomain>uddi:somebusiness</keyDomain>
+			<listenUrl>http://MyHostname:4444/callback</listenUrl>
+			<autoRegisterBindingTemplate>false</autoRegisterBindingTemplate>
+			<autoRegisterBusinessServiceKey>uddi:somebusiness:someservicekey</autoRegisterBusinessServiceKey>
+			<signatureBehavior>DoNothing</signatureBehavior>
+			<!--valid values are AbortIfSigned,Sign,DoNothing,SignOnlyIfParentIsntSigned, default is DoNothing-->
+		</subscriptionCallbacks>
+		<XtoWsdl>
+			<IgnoreSSLErrors>false</IgnoreSSLErrors>
+		</XtoWsdl>
+	</client>
+</uddi>
diff --git a/juddi-examples/pom.xml b/juddi-examples/pom.xml
index 794a3a6..6b93f73 100644
--- a/juddi-examples/pom.xml
+++ b/juddi-examples/pom.xml
@@ -40,5 +40,6 @@
 		<module>service-version</module>
     <module>uddiv2-api-bridge-example</module>
     <module>ValueSetValidator</module>
-  </modules>
+	 <module>juddi-embedded</module>
+	</modules>
 </project>
\ No newline at end of file
diff --git a/juddi-gui/pom.xml b/juddi-gui/pom.xml
index a1e4716..18d0dee 100644
--- a/juddi-gui/pom.xml
+++ b/juddi-gui/pom.xml
@@ -16,7 +16,7 @@
     </parent>
     <artifactId>juddi-gui-war</artifactId>
     <packaging>war</packaging>
-    <name>jUDDI GUI WAR construction</name>
+    <name>jUDDI GUI WAR</name>
     <url>http://juddi.apache.org</url>
     <dependencies>
         <dependency>