juddi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ks...@apache.org
Subject svn commit: r492694 - in /webservices/juddi/trunk/src/java/org/apache/juddi/registry/local: ./ AbstractService.java InquiryService.java PublishService.java Registry.java
Date Thu, 04 Jan 2007 19:12:18 GMT
Author: kstam
Date: Thu Jan  4 11:12:17 2007
New Revision: 492694

URL: http://svn.apache.org/viewvc?view=rev&rev=492694
Log:
JUDDI-90 embedded mode execution Part II (and final). Adding the local transport support.

We should refactor the implementation of all these different transports so that they all reuse
the same core
implementation, but for now I don't want to introduce any issues with the current code base.

Added:
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/AbstractService.java
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/InquiryService.java
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/PublishService.java
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/Registry.java

Added: webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/AbstractService.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/AbstractService.java?view=auto&rev=492694
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/AbstractService.java
(added)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/AbstractService.java
Thu Jan  4 11:12:17 2007
@@ -0,0 +1,311 @@
+/*
+ * Copyright 2001-2004 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.registry.local;
+
+import java.util.Vector;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.soap.SOAPException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.datatype.RegistryObject;
+import org.apache.juddi.datatype.response.DispositionReport;
+import org.apache.juddi.datatype.response.ErrInfo;
+import org.apache.juddi.datatype.response.Result;
+import org.apache.juddi.error.BusyException;
+import org.apache.juddi.error.FatalErrorException;
+import org.apache.juddi.error.RegistryException;
+import org.apache.juddi.error.UnsupportedException;
+import org.apache.juddi.handler.HandlerMaker;
+import org.apache.juddi.handler.IHandler;
+import org.apache.juddi.registry.RegistryEngine;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * @author Kurt Stam (kurt.stam@redhat.com)
+ */
+public abstract class AbstractService
+{
+  // private reference to the webapp's logger.
+  private static Log log = LogFactory.getLog(AbstractService.class);
+  
+  // XML Document Builder
+  private static DocumentBuilder docBuilder = null;
+
+  public Node handleRequest(Element uddiReq) throws javax.xml.registry.RegistryException
+  {
+    try 
+    {
+      if (uddiReq == null)
+        throw new FatalErrorException("A UDDI request was not " +
+          "found in the SOAP message.");
+      
+      // Grab the local name of the UDDI request element
+      // from the UDDI Request. If a value isn't returned 
+      // (either null or an empty String is returned) then 
+      // throw a FatalError exception. This is probably a 
+      // configuration problem related to the XML Parser 
+      // that jUDDI is using.
+      
+      String operation = uddiReq.getLocalName();
+      if ((operation == null) || (operation.trim().length() == 0))
+        throw new FatalErrorException("The UDDI service operation " +
+          "could not be identified.");
+      
+      // Grab the generic attribute value (version value).  If 
+      // one isn't specified or the value specified is not "2.0" 
+      // then throw an exception (this value must be specified 
+      // for all UDDI requests and currently only vesion 2.0
+      // UDDI requests are supported).
+
+      String version = uddiReq.getAttribute("generic");
+      if (version == null)
+        throw new FatalErrorException("A UDDI generic attribute " +
+          "value was not found for UDDI request: "+operation+" (The " +
+          "'generic' attribute must be present)");
+
+      // Verify that the appropriate endpoint was targeted for
+      // this service request.  The validateRequest method will
+      // throw an UnsupportedException if anything's amiss.
+
+      validateRequest(operation,version,uddiReq);
+      
+      // Lookup the appropriate XML handler.  Throw an 
+      // UnsupportedException if one could not be located.
+
+      HandlerMaker maker = HandlerMaker.getInstance();
+			IHandler requestHandler = maker.lookup(operation);
+      if (requestHandler == null)
+        throw new UnsupportedException("The UDDI service operation " +
+          "specified is unknown or unsupported: " +operation);
+      
+      // Unmarshal the raw xml into the appropriate jUDDI
+      // request object.
+
+      RegistryObject uddiReqObj = requestHandler.unmarshal(uddiReq);
+      
+      // Grab a reference to the shared jUDDI registry 
+      // instance (make sure it's running) and execute the 
+      // requested UDDI function.
+      
+      RegistryObject uddiResObj = null;      
+      RegistryEngine registry = Registry.getRegistry();
+      if ((registry != null) && (registry.isAvailable()))
+        uddiResObj = registry.execute(uddiReqObj);
+      else
+        throw new BusyException("The Registry is currently unavailable.");
+      
+      // Lookup the appropriate response handler which will
+      // be used to marshal the UDDI object into the appropriate 
+      // xml format.
+      
+      IHandler responseHandler = maker.lookup(uddiResObj.getClass().getName());
+      if (responseHandler == null)
+        throw new FatalErrorException("The response object " +
+          "type is unknown: " +uddiResObj.getClass().getName());
+      
+      // Create a new 'temp' XML element to use as a container 
+      // in which to marshal the UDDI response data into.
+        
+      DocumentBuilder docBuilder = getDocumentBuilder();
+      Document document = docBuilder.newDocument();
+      Element element = document.createElement("temp");
+      
+      // Lookup the appropriate response handler and marshal 
+      // the juddi object into the appropriate xml format (we 
+      // only support UDDI v2.0 at this time).  Attach the
+      // results to the body of the SOAP response.
+        
+      responseHandler.marshal(uddiResObj,element);
+      
+      // Grab a reference to the 'temp' element's
+      // only child here (this has the effect of
+      // discarding the temp element) and append 
+      // this child to the soap response body
+      document.appendChild(element.getFirstChild());
+
+      return document;
+    } 
+    catch(Exception ex) // Catch ALL exceptions
+    {
+      // SOAP Fault values
+      String faultCode = null;
+      String faultString = null;
+      String faultActor = null;
+      
+      // UDDI DispositionReport values
+      String errno = null;
+      String errCode = null;
+      String errText = null;
+      
+      // All RegistryException and subclasses of RegistryException
+      // should contain values for populating a SOAP Fault as well
+      // as a UDDI DispositionReport with specific information 
+      // about the problem.
+      //
+      // We've got to dig out the dispositionReport and populate  
+      // the SOAP Fault 'detail' element with this information.        
+      
+      if (ex instanceof RegistryException)
+      {
+        // Since we've intercepted a RegistryException type
+        // then we can assume this is a "controlled" event
+        // and simply log the error message without a stack
+        // trace.
+
+        log.error(ex.getMessage());
+
+        RegistryException rex = (RegistryException)ex;
+        
+        faultCode = rex.getFaultCode();  // SOAP Fault faultCode
+        faultString = rex.getFaultString();  // SOAP Fault faultString
+        faultActor = rex.getFaultActor();  // SOAP Fault faultActor
+        
+        DispositionReport dispRpt = rex.getDispositionReport();
+        if (dispRpt != null)
+        {
+          Result result = null;
+          ErrInfo errInfo = null;
+        
+          Vector results = dispRpt.getResultVector();
+          if ((results != null) && (!results.isEmpty()))
+            result = (Result)results.elementAt(0);
+        
+          if (result != null)
+          {
+            errno = String.valueOf(result.getErrno());  // UDDI Result errno
+            errInfo = result.getErrInfo();
+          
+            if (errInfo != null)
+            {
+              errCode = errInfo.getErrCode();  // UDDI ErrInfo errCode
+              errText = errInfo.getErrMsg();  // UDDI ErrInfo errMsg
+            }
+          }
+        }
+      }
+      else if (ex instanceof SOAPException)
+      {
+        log.error(ex.getMessage());
+          
+        // Because something occured that jUDDI wasn't expecting
+        // let's set default SOAP Fault values.  Since SOAPExceptions
+        // here are most likely XML validation errors let's blame the
+        // client by placing "Client" in the Fault Code and pass
+        // the Exception message back to the client.
+        
+        faultCode = "Client";
+        faultString = ex.getMessage();
+        faultActor = null;
+        
+        // Let's set default values for the UDDI DispositionReport
+        // here.  While we didn't catch a RegistryException (or 
+        // subclass) we're going to be friendly and include a
+        // FatalError DispositionReport within the message from the 
+        // SAX parsing problem in the SOAP Fault anyway.
+        
+        errno = String.valueOf(Result.E_FATAL_ERROR);
+        errCode = Result.lookupErrCode(Result.E_FATAL_ERROR); 
+        errText = Result.lookupErrText(Result.E_FATAL_ERROR) + 
+                  " " + ex.getMessage();
+      }
+      else // anything else
+      {
+        // All other exceptions (other than SOAPException or 
+        // RegistryException and subclasses) are either a result 
+        // of a jUDDI configuration problem or something that 
+        // we *should* be catching and converting to a 
+        // RegistryException but are not (yet!).
+            
+        log.error(ex.getMessage(),ex);
+
+        // Because something occured that jUDDI wasn't expecting
+        // let's set default SOAP Fault values.  Since jUDDI
+        // should be catching anything significant let's blame 
+        // jUDDI by placing "Server" in the Fault Code and pass
+        // the Exception message on to the client.
+        
+        faultCode = "Server";
+        faultString = ex.getMessage();
+        faultActor = null;
+          
+        // Let's set default values for the UDDI DispositionReport
+        // here.  While we didn't catch a RegistryException (or 
+        // subclass) but we're going to be friendly and include a
+        // FatalError DispositionReport within the SOAP Fault anyway.
+        
+        errno = String.valueOf(Result.E_FATAL_ERROR);
+        errCode = Result.lookupErrCode(Result.E_FATAL_ERROR); 
+        errText = Result.lookupErrText(Result.E_FATAL_ERROR) +
+                  " An internal UDDI server error has " +
+                  "occurred. Please report this error " +
+                  "to the UDDI server administrator.";
+      }
+      
+      // We should have everything we need to assemble 
+      // the SOAPFault so lets piece it together and 
+      // send it on it's way.
+      String fault = "faultCode=" + faultCode + ", faultString=" + faultString 
+  	+ ", faultActor=" + faultActor + ", errno=" + errno + ", errCode=" + errCode
+  	+ ", errText=" + errText;
+      //FIX ME Kurt, change to other type of exception.
+      throw new javax.xml.registry.RegistryException(fault);
+    }
+  }
+
+  /**
+   * 
+   */
+  public abstract void validateRequest(String operation,String generic,Element uddiReq)
+  	throws RegistryException;
+  
+  /**
+   *
+   */
+  private DocumentBuilder getDocumentBuilder()
+  {
+    if (docBuilder == null)
+      docBuilder = createDocumentBuilder();    
+    return docBuilder;
+  }
+
+  /**
+   *
+   */
+  private synchronized DocumentBuilder createDocumentBuilder()
+  {
+    if (docBuilder != null)
+      return docBuilder;
+
+    try {
+     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+     factory.setNamespaceAware(true);
+     //factory.setValidating(true);
+
+     docBuilder = factory.newDocumentBuilder();
+    }
+    catch(ParserConfigurationException pcex) {
+      pcex.printStackTrace();
+    }
+
+    return docBuilder;
+  }
+}
\ No newline at end of file

Added: webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/InquiryService.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/InquiryService.java?view=auto&rev=492694
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/InquiryService.java (added)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/InquiryService.java Thu
Jan  4 11:12:17 2007
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2001-2004 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.registry.local;
+
+import java.util.TreeSet;
+
+import org.apache.juddi.IRegistry;
+import org.apache.juddi.error.FatalErrorException;
+import org.apache.juddi.error.RegistryException;
+import org.apache.juddi.error.UnsupportedException;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * @author Kurt Stam (kurt.stam@redhat.com)
+ */
+public class InquiryService extends AbstractService
+{
+//	 collection of valid operations
+	  private TreeSet operations = null;
+	  
+  public InquiryService() {
+		super();
+		operations = new TreeSet();
+	  	operations.add("find_business");
+	  	operations.add("find_service");
+	  	operations.add("find_binding");
+	  	operations.add("find_tmodel");
+	  	operations.add("find_relatedbusinesses");
+	  	operations.add("get_businessdetail");
+	  	operations.add("get_businessdetailext");
+	  	operations.add("get_servicedetail");
+	  	operations.add("get_bindingdetail");
+	  	operations.add("get_tmodeldetail");
+	}
+
+  public void validateRequest(String operation,String version,Element uddiReq)
+		throws RegistryException
+	{
+    // If the value 
+  	// specified is not "2.0" then throw an exception (this 
+  	// value must be specified for all UDDI requests and 
+  	// only version 2.0 UDDI requests are supported by 
+  	// this endpoint).
+
+  	if (version == null)
+      throw new FatalErrorException("A UDDI generic attribute " +
+        "value was not found for UDDI request: "+operation+" (The " +
+        "'generic' attribute must be present)");
+    else if (!version.equals(IRegistry.UDDI_V2_GENERIC))
+      throw new UnsupportedException("Only UDDI v2 " +
+        "requests are currently supported. The generic attribute value " +
+        "received was: "+version);
+
+    if ((operation == null) || (operation.trim().length() == 0))
+      throw new FatalErrorException("The UDDI service operation " +
+        "could not be identified.");
+    else if (!operations.contains(operation.toLowerCase()))
+    	throw new UnsupportedException("The operation "+operation+" is not " +
+    			"supported by the UDDI version 2 Inquiry API.");
+	}
+  
+  public Node inquire(Element uddiReq) throws javax.xml.registry.RegistryException{
+	  return handleRequest(uddiReq);
+  }
+  
+}

Added: webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/PublishService.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/PublishService.java?view=auto&rev=492694
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/PublishService.java (added)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/PublishService.java Thu
Jan  4 11:12:17 2007
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2001-2004 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.registry.local;
+
+import java.util.TreeSet;
+
+import org.apache.juddi.IRegistry;
+import org.apache.juddi.error.FatalErrorException;
+import org.apache.juddi.error.RegistryException;
+import org.apache.juddi.error.UnsupportedException;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * @author Kurt Stam (kurt.stam@jboss.com)
+ */
+public class PublishService extends AbstractService
+{
+  // collection of valid operations
+  private TreeSet operations = null;
+
+  public PublishService() {
+	super();
+	operations = new TreeSet();
+  	operations.add("get_authtoken");
+  	operations.add("get_registeredinfo");
+  	operations.add("discard_authtoken");
+  	operations.add("save_business");
+  	operations.add("save_service");
+  	operations.add("save_binding");
+  	operations.add("save_tmodel");
+  	operations.add("delete_business");
+  	operations.add("delete_service");
+  	operations.add("delete_binding");
+  	operations.add("delete_tmodel");
+  	operations.add("add_publisherassertions");
+  	operations.add("set_publisherassertions");
+  	operations.add("get_publisherassertions");
+  	operations.add("delete_publisherassertions");
+  	operations.add("get_assertionstatusreport");
+}
+
+
+  public void validateRequest(String operation,String version,Element uddiReq)
+		throws RegistryException
+	{
+    // If the value 
+  	// specified is not "2.0" then throw an exception (this 
+  	// value must be specified for all UDDI requests and 
+  	// only version 2.0 UDDI requests are supported by 
+  	// this endpoint).
+
+  	if (version == null)
+      throw new FatalErrorException("A UDDI generic attribute " +
+        "value was not found for UDDI request: "+operation+" (The " +
+        "'generic' attribute must be present)");
+    else if (!version.equals(IRegistry.UDDI_V2_GENERIC))
+      throw new UnsupportedException("Only UDDI v2 " +
+        "requests are currently supported. The generic attribute value " +
+        "received was: "+version);
+
+    if ((operation == null) || (operation.trim().length() == 0))
+      throw new FatalErrorException("The UDDI service operation " +
+        "could not be identified.");
+    else if (!operations.contains(operation.toLowerCase()))
+    	throw new UnsupportedException("The operation "+operation+" is not " +
+    			"supported by the UDDI version 2 Publish API.");
+	}
+  
+  public Node publish(Element uddiReq) throws javax.xml.registry.RegistryException{
+	  return handleRequest(uddiReq);
+  }
+}

Added: webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/Registry.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/Registry.java?view=auto&rev=492694
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/Registry.java (added)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/registry/local/Registry.java Thu Jan
 4 11:12:17 2007
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2001-2004 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.registry.local;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.registry.RegistryEngine;
+import org.apache.juddi.util.Loader;
+
+/**
+ * This servlet is ONLY used to initialize the jUDDI webapp on
+ * startup and cleanup the jUDDI webapp on shutdown.
+ * 
+ * @author Kurt Stam (kurt.stam@redhat.com)
+ */
+public abstract class Registry
+{ 
+  private static final String CONFIG_FILE_PROPERTY_NAME = "juddi.propertiesFile";
+  // default config file name. 
+  private static final String DEFAULT_PROPERTY_FILE = "/juddi.properties";
+   
+  // private reference to the webapp's logger.
+  private static Log log = LogFactory.getLog(Registry.class);
+
+  // registry singleton instance
+  private static RegistryEngine registry = null;
+
+/**
+   * Create the shared instance of jUDDI's Registry class
+   * and call it's "init()" method to initialize all core 
+   * components.
+   */
+  public static void init() 
+  {   
+
+    Properties props = new Properties();
+
+    try
+    {      
+      log.info("Loading jUDDI configuration.");
+        
+//    determine the name of the juddi property file to use from web.xml
+      String propFile = System.getProperty(CONFIG_FILE_PROPERTY_NAME);
+      if ((propFile == null) || (propFile.trim().length() == 0)) {
+        propFile = DEFAULT_PROPERTY_FILE;
+      }
+   
+      InputStream is = Loader.getResourceAsStream(propFile);
+      if (is==null) {
+    	  is = Class.class.getResourceAsStream(propFile);
+      }
+      if (is==null) {
+    	  File configFile = new File(propFile);
+    	  is = new FileInputStream(configFile);
+      }
+        
+      if (is != null)
+      {
+        log.info("Resources loaded from: "+propFile);
+
+        // Load jUDDI configuration from the 
+        // juddi.properties file found in root directory.
+
+        props.load(is);
+      }
+      else
+      {
+        log.warn("Could not locate jUDDI properties '" + propFile + 
+                "'. Using defaults.");
+
+        // A juddi.properties file doesn't exist
+        // yet so create create a new Properties 
+        // instance using default property values.
+        
+        props.put(RegistryEngine.PROPNAME_OPERATOR_NAME,
+                  RegistryEngine.DEFAULT_OPERATOR_NAME);
+        
+        props.put(RegistryEngine.PROPNAME_I18N_LANGUAGE_CODE,
+            			RegistryEngine.DEFAULT_I18N_LANGUAGE_CODE);
+  
+        props.put(RegistryEngine.PROPNAME_I18N_COUNTRY_CODE,
+            			RegistryEngine.DEFAULT_I18N_COUNTRY_CODE);
+  
+        props.put(RegistryEngine.PROPNAME_DISCOVERY_URL,
+                  RegistryEngine.DEFAULT_DISCOVERY_URL);
+        
+        props.put(RegistryEngine.PROPNAME_ADMIN_EMAIL_ADDRESS,
+                  RegistryEngine.DEFAULT_ADMIN_EMAIL_ADDRESS);
+        
+        props.put(RegistryEngine.PROPNAME_DATASOURCE_NAME,
+                  RegistryEngine.DEFAULT_DATASOURCE_NAME);
+        
+        props.put(RegistryEngine.PROPNAME_IS_USE_DATASOURCE,
+                  RegistryEngine.DEFAULT_IS_USE_DATASOURCE);
+        
+        props.put(RegistryEngine.PROPNAME_JDBC_DRIVER,
+                RegistryEngine.DEFAULT_JDBC_DRIVER);
+      
+        props.put(RegistryEngine.PROPNAME_JDBC_URL,
+                RegistryEngine.DEFAULT_JDBC_URL);
+      
+        props.put(RegistryEngine.PROPNAME_JDBC_USERNAME,
+                RegistryEngine.DEFAULT_JDBC_USERNAME);
+      
+        props.put(RegistryEngine.PROPNAME_JDBC_PASSWORD,
+                RegistryEngine.DEFAULT_JDBC_PASSWORD);
+              
+        props.put(RegistryEngine.PROPNAME_AUTH_CLASS_NAME,
+                  RegistryEngine.DEFAULT_AUTH_CLASS_NAME);
+        
+        props.put(RegistryEngine.PROPNAME_CRYPTOR_CLASS_NAME,
+                  RegistryEngine.DEFAULT_CRYPTOR_CLASS_NAME);
+        
+        props.put(RegistryEngine.PROPNAME_DATASTORE_CLASS_NAME,
+                  RegistryEngine.DEFAULT_DATASTORE_CLASS_NAME);
+        
+        props.put(RegistryEngine.PROPNAME_UUIDGEN_CLASS_NAME,
+                  RegistryEngine.DEFAULT_UUIDGEN_CLASS_NAME);
+        
+        props.put(RegistryEngine.PROPNAME_VALIDATOR_CLASS_NAME,
+                  RegistryEngine.DEFAULT_VALIDATOR_CLASS_NAME);  
+
+        props.put(RegistryEngine.PROPNAME_MAX_NAME_ELEMENTS,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_NAME_ELEMENTS));
+        
+        props.put(RegistryEngine.PROPNAME_MAX_NAME_LENGTH,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_NAME_LENGTH));
+
+        props.put(RegistryEngine.PROPNAME_MAX_MESSAGE_SIZE,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_MESSAGE_SIZE));        
+
+        props.put(RegistryEngine.PROPNAME_MAX_BUSINESSES_PER_PUBLISHER,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_BUSINESSES_PER_PUBLISHER));
+        
+        props.put(RegistryEngine.PROPNAME_MAX_SERVICES_PER_BUSINESS,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_SERVICES_PER_BUSINESS));
+        
+        props.put(RegistryEngine.PROPNAME_MAX_BINDINGS_PER_SERVICE,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_BINDINGS_PER_SERVICE));
+        
+        props.put(RegistryEngine.PROPNAME_MAX_TMODELS_PER_PUBLISHER,
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_TMODELS_PER_PUBLISHER));
+        
+        props.put(RegistryEngine.PROPNAME_MAX_ROWS_LIMIT,           
+                  Integer.toString(RegistryEngine.DEFAULT_MAX_ROWS_LIMIT));
+        
+        props.put(RegistryEngine.PROPNAME_JAVA_NAMING_FACTORY_INITIAL,           
+                RegistryEngine.DEFAULT_JAVA_NAMING_FACTORY_INITIAL);
+      
+        props.put(RegistryEngine.PROPNAME_JAVA_NAMING_PROVIDER_URL,           
+                RegistryEngine.DEFAULT_JAVA_NAMING_PROVIDER_URL);
+      
+        props.put(RegistryEngine.PROPNAME_JAVA_NAMING_FACTORY_URL_PKGS,           
+                RegistryEngine.DEFAULT_JAVA_NAMING_FACTORY_URL_PKGS);
+        
+      }
+    }
+    catch(IOException ioex) {
+      log.error(ioex.getMessage(),ioex);
+    }
+
+    log.info("Initializing jUDDI components.");
+    
+    registry = new RegistryEngine(props);
+    registry.init();
+  }
+  
+  /**
+   * Grab the shared instance of jUDDI's Registry class and
+   * call it's "dispose()" method to notify all sub-components
+   * to stop any background threads and release any external
+   * resources they may have aquired.
+   */
+  public void destroy()
+  {
+    log.info("jUDDI Stopping: Cleaning up existing resources.");
+
+    RegistryEngine registry = Registry.getRegistry();
+    if (registry != null)
+      registry.dispose();
+  }
+
+  /**
+   *
+   */
+  public static RegistryEngine getRegistry()
+  {
+	  init();
+      return registry;
+  }
+}
\ No newline at end of file



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


Mime
View raw message