You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by ks...@apache.org on 2007/01/04 20:07:07 UTC

svn commit: r492688 - in /webservices/juddi/trunk/src: java/org/apache/juddi/datastore/jdbc/ java/org/apache/juddi/registry/ java/org/apache/juddi/util/ java/org/apache/juddi/util/jdbc/ junit/org/apache/juddi/datastore/jdbc/

Author: kstam
Date: Thu Jan  4 11:07:06 2007
New Revision: 492688

URL: http://svn.apache.org/viewvc?view=rev&rev=492688
Log:
JUDDI-90: Embedded mode excution. Part-I: Moving the Database class so that it can be used for to connect to a database directly using straight jdbc.
This feature is needed to allow to juddi in embedded mode (outside of a j2ee container). 
For stress/high load situations we will need to add connection pooling.

Added:
    webservices/juddi/trunk/src/java/org/apache/juddi/datastore/jdbc/Database.java
Removed:
    webservices/juddi/trunk/src/junit/org/apache/juddi/datastore/jdbc/Database.java
Modified:
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryEngine.java
    webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryServlet.java
    webservices/juddi/trunk/src/java/org/apache/juddi/util/Config.java
    webservices/juddi/trunk/src/java/org/apache/juddi/util/jdbc/ConnectionManager.java

Added: webservices/juddi/trunk/src/java/org/apache/juddi/datastore/jdbc/Database.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/datastore/jdbc/Database.java?view=auto&rev=492688
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/datastore/jdbc/Database.java (added)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/datastore/jdbc/Database.java Thu Jan  4 11:07:06 2007
@@ -0,0 +1,72 @@
+/*
+ * 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.datastore.jdbc;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.registry.RegistryEngine;
+import org.apache.juddi.util.Config;
+
+
+/**
+ * @author Steve Viens (sviens@apache.org)
+ */
+public class Database
+{
+  // private reference to the jUDDI logger
+  private static Log log = LogFactory.getLog(Database.class);
+  
+  // grab the JDBC properties we'll need to setup 
+  // the connection pool.
+  private static String jdbcDriver = Config.getStringProperty(
+		  RegistryEngine.PROPNAME_JDBC_DRIVER,RegistryEngine.DEFAULT_JDBC_DRIVER);
+  private static String jdbcURL = Config.getStringProperty(
+		  RegistryEngine.PROPNAME_JDBC_URL,RegistryEngine.DEFAULT_JDBC_URL);
+  private static String jdbcUser = Config.getStringProperty(
+		  RegistryEngine.PROPNAME_JDBC_USERNAME,RegistryEngine.DEFAULT_JDBC_USERNAME);
+  private static String jdbcPassword = Config.getStringProperty(
+		  RegistryEngine.PROPNAME_JDBC_PASSWORD,RegistryEngine.DEFAULT_JDBC_PASSWORD);
+
+  /**
+   *
+   */
+  public static Connection aquireConnection()
+    throws SQLException
+  {
+   
+
+    // make sure the JDBC Driver is loaded
+    
+    try {
+    	Class.forName(jdbcDriver);
+    }
+    catch(ClassNotFoundException cnfex) {
+      throw new SQLException("Could not locate JDBC Driver '" +
+      		jdbcDriver+"' in classpath: "+cnfex.getMessage());
+    }
+
+    // okay, get and return the connection
+    
+    Connection connection = 
+    	DriverManager.getConnection(jdbcURL,jdbcUser,jdbcPassword);
+    	
+    return connection;
+  }
+}

Modified: webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryEngine.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryEngine.java?view=diff&rev=492688&r1=492687&r2=492688
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryEngine.java (original)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryEngine.java Thu Jan  4 11:07:06 2007
@@ -50,6 +50,15 @@
   public static final String PROPNAME_DISCOVERY_URL = "juddi.discoveryURL";
   public static final String PROPNAME_ADMIN_EMAIL_ADDRESS = "juddi.adminEmailAddress"; // unused
   public static final String PROPNAME_DATASOURCE_NAME = "juddi.dataSource";
+  public static final String PROPNAME_IS_USE_DATASOURCE = "juddi.isUseDataSource";
+  public static final String PROPNAME_JDBC_DRIVER = "juddi.jdbcDriver";
+  public static final String PROPNAME_JDBC_URL = "juddi.jdbcUrl";
+  public static final String PROPNAME_JDBC_USERNAME = "juddi.jdbcUsername";
+  public static final String PROPNAME_JDBC_PASSWORD = "juddi.jdbcPassword";
+  
+  public static final String PROPNAME_JAVA_NAMING_FACTORY_INITIAL = "java.naming.factory.initial";
+  public static final String PROPNAME_JAVA_NAMING_PROVIDER_URL = "java.naming.provider.url";
+  public static final String PROPNAME_JAVA_NAMING_FACTORY_URL_PKGS = "java.naming.factory.url.pkgs";
   
   public static final String PROPNAME_AUTH_CLASS_NAME = "juddi.auth";
   public static final String PROPNAME_DATASTORE_CLASS_NAME = "juddi.dataStore";
@@ -78,12 +87,21 @@
   public static final String DEFAULT_DISCOVERY_URL = "http://localhost:8080/juddi/uddiget.jsp?";
   public static final String DEFAULT_ADMIN_EMAIL_ADDRESS = "nobody@apache.org"; // unused
   public static final String DEFAULT_DATASOURCE_NAME = "java:comp/env/jdbc/juddiDB";
+  public static final Boolean DEFAULT_IS_USE_DATASOURCE = Boolean.TRUE;
+  public static final String DEFAULT_JDBC_DRIVER = "com.mysql.jdbc.Driver";
+  public static final String DEFAULT_JDBC_URL = "jdbc:mysql://localhost/juddi";
+  public static final String DEFAULT_JDBC_USERNAME = "juddi";
+  public static final String DEFAULT_JDBC_PASSWORD = "juddi";
   
   public static final String DEFAULT_AUTH_CLASS_NAME = "org.apache.juddi.auth.DefaultAuthenticator";
-  public static final String DEFAULT_DATASTORE_CLASS_NAME = "org.apache.juddi.datastore.JDBCDataStore";
+  public static final String DEFAULT_DATASTORE_CLASS_NAME = "org.apache.juddi.datastore.jdbc.JDBCDataStore";
   public static final String DEFAULT_CRYPTOR_CLASS_NAME = "org.apache.juddi.cryptor.DefaultCryptor";
   public static final String DEFAULT_UUIDGEN_CLASS_NAME = "org.apache.juddi.uuidgen.DefaultUUIDGen";
   public static final String DEFAULT_VALIDATOR_CLASS_NAME = "org.apache.juddi.validator.DefaultValidator";
+  
+  public static final String DEFAULT_JAVA_NAMING_FACTORY_INITIAL = "org.jnp.interfaces.NamingContextFactory";
+  public static final String DEFAULT_JAVA_NAMING_PROVIDER_URL = "jnp://localhost:1099";
+  public static final String DEFAULT_JAVA_NAMING_FACTORY_URL_PKGS = "org.jboss.naming";
   
   public static final int    DEFAULT_MAX_NAME_ELEMENTS = 5;
   public static final int    DEFAULT_MAX_NAME_LENGTH = 255;    

Modified: webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryServlet.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryServlet.java?view=diff&rev=492688&r1=492687&r2=492688
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryServlet.java (original)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/registry/RegistryServlet.java Thu Jan  4 11:07:06 2007
@@ -106,6 +106,21 @@
         
         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);
@@ -145,6 +160,16 @@
         
         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) {

Modified: webservices/juddi/trunk/src/java/org/apache/juddi/util/Config.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/util/Config.java?view=diff&rev=492688&r1=492687&r2=492688
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/util/Config.java (original)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/util/Config.java Thu Jan  4 11:07:06 2007
@@ -212,9 +212,14 @@
     boolean boolVal = defaultValue;
 
     String propValue = getStringProperty(key);
-    if ((propValue != null) && (propValue.equalsIgnoreCase("true")))
-      boolVal = true;
-
+    if (propValue != null) {
+    	if (propValue.equalsIgnoreCase("true")) {
+    		boolVal = true;
+    	} else if (propValue.equalsIgnoreCase("false")) {
+    		boolVal = false;
+    	}
+    }
+      
     return boolVal;
   }
 

Modified: webservices/juddi/trunk/src/java/org/apache/juddi/util/jdbc/ConnectionManager.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/src/java/org/apache/juddi/util/jdbc/ConnectionManager.java?view=diff&rev=492688&r1=492687&r2=492688
==============================================================================
--- webservices/juddi/trunk/src/java/org/apache/juddi/util/jdbc/ConnectionManager.java (original)
+++ webservices/juddi/trunk/src/java/org/apache/juddi/util/jdbc/ConnectionManager.java Thu Jan  4 11:07:06 2007
@@ -24,6 +24,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.datastore.jdbc.Database;
 import org.apache.juddi.registry.RegistryEngine;
 import org.apache.juddi.util.Config;
 
@@ -45,13 +46,24 @@
   public static Connection aquireConnection()
     throws SQLException
   {
+	  
     // Make sure we've got a DataSource first
     if (dataSource == null)
       dataSource = lookupDataSource();
 
     Connection conn = null;
-    if (dataSource != null)
+    if (dataSource != null) {
       conn = dataSource.getConnection();
+    } else {
+        //check if we wanted to use a dataSource
+        boolean isUseDatasource =
+            Config.getBooleanProperty(RegistryEngine.PROPNAME_IS_USE_DATASOURCE,
+                RegistryEngine.DEFAULT_IS_USE_DATASOURCE.booleanValue());
+        if (!isUseDatasource) {
+        	//create jdbc connection
+        	conn = Database.aquireConnection();
+        }
+    }
 
     return conn;
   }
@@ -66,6 +78,17 @@
     if (dataSource != null)
       return dataSource;
 
+    //check if we wanted to use a dataSource
+    boolean isUseDatasource =
+        Config.getBooleanProperty(RegistryEngine.PROPNAME_IS_USE_DATASOURCE,
+            RegistryEngine.DEFAULT_IS_USE_DATASOURCE.booleanValue());
+    if (!isUseDatasource) {
+    	log.info("Not using Datasource as " 
+    			+ RegistryEngine.PROPNAME_IS_USE_DATASOURCE + "=" 
+    			+ isUseDatasource);
+    	return dataSource;
+    }
+    
     // look it up.
     try
     {



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