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>