You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2012/09/05 00:12:52 UTC

[29/50] [abbrv] Moved Awsapi (EC2/S3) from Hibernate framework to CloudStack Generic Dao Framework

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/awsapi/src/com/cloud/bridge/util/CloudStackSessionFactory.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/util/CloudStackSessionFactory.java b/awsapi/src/com/cloud/bridge/util/CloudStackSessionFactory.java
deleted file mode 100644
index ac5e2d5..0000000
--- a/awsapi/src/com/cloud/bridge/util/CloudStackSessionFactory.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.bridge.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
-import org.jasypt.properties.EncryptableProperties;
-import org.apache.log4j.Logger;
-
-public class CloudStackSessionFactory {
-	private static CloudStackSessionFactory instance;
-	public static final Logger logger = Logger.getLogger(CloudStackSessionFactory.class);
-	
-	private SessionFactory factory;
-	
-	private CloudStackSessionFactory() {
-		Configuration cfg = new Configuration();
-		File file = ConfigurationHelper.findConfigurationFile("CloudStack.cfg.xml");
-
-        File propertiesFile = ConfigurationHelper.findConfigurationFile("db.properties");
-        Properties dbProp = null;
-        String     dbName     = null;
-        String     dbHost     = null;
-        String     dbUser     = null;
-        String     dbPassword = null;
-        String     dbPort     = null; 
-               
-        if (null != propertiesFile) {
-            
-            if(EncryptionSecretKeyCheckerUtil.useEncryption()){
-                StandardPBEStringEncryptor encryptor = EncryptionSecretKeyCheckerUtil.getEncryptor();
-                dbProp = new EncryptableProperties(encryptor);
-            } else {
-                dbProp = new Properties();
-            }
-            
-            try {
-                dbProp.load( new FileInputStream( propertiesFile ));
-            } catch (FileNotFoundException e) {
-                logger.warn("Unable to open properties file: " + propertiesFile.getAbsolutePath(), e);
-            } catch (IOException e) {
-                logger.warn("Unable to read properties file: " + propertiesFile.getAbsolutePath(), e);
-            }
-        }
-	        
-
-	    //
-		// we are packaging hibernate mapping files along with the class files, 
-    	// make sure class loader use the same class path when initializing hibernate mapping.
-		// This is important when we are deploying and testing at different environment (Tomcat/JUnit test runner)
-		//
-        if(file != null && dbProp != null){
-        	Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
-        	cfg.configure(file);
-        	
-            dbHost     = dbProp.getProperty( "db.cloud.host" );
-            dbName     = dbProp.getProperty( "db.cloud.name" );
-            dbUser     = dbProp.getProperty( "db.cloud.username" );
-            dbPassword = dbProp.getProperty( "db.cloud.password" );
-            dbPort     = dbProp.getProperty( "db.cloud.port" );
-
-            cfg.setProperty("hibernate.connection.url", "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName);
-        	cfg.setProperty("hibernate.connection.username", dbUser);
-        	cfg.setProperty("hibernate.connection.password", dbPassword);
-        	
-        	
-    		factory = cfg.buildSessionFactory();
-        }else{
-            logger.warn("Unable to open load db configuration");
-            throw new RuntimeException("nable to open load db configuration");
-        }
-	}
-	
-	public synchronized static CloudStackSessionFactory getInstance() {
-		if(instance == null) {
-			instance = new CloudStackSessionFactory();
-		}
-		return instance;
-	}
-	
-	public Session openSession() {
-		return factory.openSession();
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/awsapi/src/com/cloud/bridge/util/QueryHelper.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/util/QueryHelper.java b/awsapi/src/com/cloud/bridge/util/QueryHelper.java
deleted file mode 100644
index 1a1b582..0000000
--- a/awsapi/src/com/cloud/bridge/util/QueryHelper.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.bridge.util;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-import org.hibernate.Query;
-
-public class QueryHelper {
-	public static void bindParameters(Query query, Object[] params) {
-		int pos = 0;
-		if(params != null && params.length > 0) {
-			for(Object param : params) {
-				if(param instanceof Byte)
-					query.setByte(pos++, ((Byte)param).byteValue());
-				else if(param instanceof Short)
-					query.setShort(pos++, ((Short)param).shortValue());
-				else if(param instanceof Integer) 
-					query.setInteger(pos++, ((Integer)param).intValue());
-				else if(param instanceof Long)
-					query.setLong(pos++, ((Long)param).longValue());
-				else if(param instanceof Float)
-					query.setFloat(pos++, ((Float)param).floatValue());
-				else if(param instanceof Double)
-					query.setDouble(pos++, ((Double)param).doubleValue());
-				else if(param instanceof Boolean)	
-					query.setBoolean(pos++, ((Boolean)param).booleanValue());
-				else if(param instanceof Character)
-					query.setCharacter(pos++, ((Character)param).charValue());
-				else if(param instanceof Date)  
-					query.setDate(pos++, (Date)param);
-				else if(param instanceof Calendar)  
-					query.setCalendar(pos++, (Calendar)param);
-				else if(param instanceof CalendarDateParam)  
-					query.setCalendarDate(pos++, ((CalendarDateParam)param).dateValue());
-				else if(param instanceof TimestampParam)  
-					query.setTimestamp(pos++, ((TimestampParam)param).timestampValue());
-				else if(param instanceof TimeParam)  
-					query.setTime(pos++, ((TimeParam)param).timeValue());
-				else if(param instanceof String)  
-					query.setString(pos++, (String)param);
-				else if(param instanceof TextParam)  
-					query.setText(pos++, ((TextParam)param).textValue());
-				else if(param instanceof byte[])  
-					query.setBinary(pos++, (byte[])param);
-				else if(param instanceof BigDecimal)
-					query.setBigDecimal(pos++, (BigDecimal)param);
-				else if(param instanceof BigInteger)
-					query.setBigInteger(pos++, (BigInteger)param);
-				else if(param instanceof Locale)
-					query.setLocale(pos++, (Locale)param);
-				else if(param instanceof EntityParam) 
-					query.setEntity(pos++, ((EntityParam)param).entityValue());
-				else if(param instanceof Serializable)
-					query.setSerializable(pos++, (Serializable)param);
-				else 
-					query.setEntity(pos++, param);
-			}
-		}
-	}
-	
-	public static <T> List<T> executeQuery(Query query) {
-		return (List<T>)query.list();
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/awsapi/src/com/cloud/stack/models/CloudStackAccount.hbm.xml
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackAccount.hbm.xml b/awsapi/src/com/cloud/stack/models/CloudStackAccount.hbm.xml
deleted file mode 100644
index 7996797..0000000
--- a/awsapi/src/com/cloud/stack/models/CloudStackAccount.hbm.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<hibernate-mapping>
-	<class name="com.cloud.stack.models.CloudStackAccount" table="account"  lazy="true">
-   		<id name="id" type="string" column="uuid" >
-  		</id>
-  		<property name="name">
-     		<column name="account_name" />
-  		</property>
-  		<property name="defaultZoneId">
-     		<column name="default_zone_id" />
-  		</property>
- 	</class>
-</hibernate-mapping>
-

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/awsapi/src/com/cloud/stack/models/CloudStackConfiguration.hbm.xml
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackConfiguration.hbm.xml b/awsapi/src/com/cloud/stack/models/CloudStackConfiguration.hbm.xml
deleted file mode 100644
index 134e6f1..0000000
--- a/awsapi/src/com/cloud/stack/models/CloudStackConfiguration.hbm.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<hibernate-mapping>
-	<class name="com.cloud.stack.models.CloudStackConfiguration" table="configuration"  lazy="true">
-   		<id name="name" type="string" column="name" >
-  		</id>
-  		<property name="category">
-     		<column name="category" />
-  		</property>
-  		<property name="value">
-     		<column name="value" />
-  		</property>
-  		<property name="description">
-     		<column name="description" />
-  		</property>
- 	</class>
-</hibernate-mapping>
-

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/awsapi/src/com/cloud/stack/models/CloudStackServiceOffering.hbm.xml
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackServiceOffering.hbm.xml b/awsapi/src/com/cloud/stack/models/CloudStackServiceOffering.hbm.xml
deleted file mode 100644
index 2bbcfd1..0000000
--- a/awsapi/src/com/cloud/stack/models/CloudStackServiceOffering.hbm.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<hibernate-mapping>
-	<class name="com.cloud.stack.models.CloudStackServiceOffering" table="disk_offering"  lazy="true">
-   		<id name="id" type="string" column="uuid" >
-  		</id>
-  		<property name="name">
-     		<column name="name" />
-  		</property>
-  		<property name="domainId">
-     		<column name="domain_id" />
-  		</property>
- 	</class>
-</hibernate-mapping>
-

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/build/build-aws-api.xml
----------------------------------------------------------------------
diff --git a/build/build-aws-api.xml b/build/build-aws-api.xml
index 04db516..9ab267e 100644
--- a/build/build-aws-api.xml
+++ b/build/build-aws-api.xml
@@ -223,6 +223,7 @@
 			<fileset dir="${jar.dir}">
 				<include name="cloud-awsapi.jar" />
 				<include name="cloud-jasypt-1.8.jar" />
+                                <include name="cloud-utils.jar" />
 			</fileset>
 		</copy>
 		<copy todir="${server.deploy.to.dir}/webapps7080/awsapi/WEB-INF/lib">

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/client/tomcatconf/components.xml.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in
index beaac13..3c4b9fd 100755
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@ -226,4 +226,31 @@ under the License.
         <dao name="Site2SiteVpnGatewayDao" class="com.cloud.network.dao.Site2SiteVpnGatewayDaoImpl" singleton="false"/>
         <dao name="Site2SiteVpnConnectionDao" class="com.cloud.network.dao.Site2SiteVpnConnectionDaoImpl" singleton="false"/>
     </configuration-server>
-</components.xml>
+    
+    <awsapi-ec2server class="com.cloud.bridge.service.EC2MainServlet">
+        <dao name="CloudStackConfigurationDao" class="com.cloud.bridge.persist.dao.CloudStackConfigurationDaoImpl" singleton="false"/>
+        <dao name="UserCredentialsDao" class="com.cloud.bridge.persist.dao.UserCredentialsDaoImpl" singleton="false"/>
+        <dao name="CloudStackSvcOfferingDao" class="com.cloud.bridge.persist.dao.CloudStackSvcOfferingDaoImpl" singleton="false"/>
+        <dao name="OfferingDao" class="com.cloud.bridge.persist.dao.OfferingDaoImpl" singleton="false"/>
+        <dao name="CloudStackAccountDao" class="com.cloud.bridge.persist.dao.CloudStackAccountDaoImpl" singleton="false"/>
+    </awsapi-ec2server>
+    
+    <awsapi-s3server class="com.cloud.bridge.service.S3RestServlet">
+        <dao name="CloudStackConfigurationDao" class="com.cloud.bridge.persist.dao.CloudStackConfigurationDaoImpl" singleton="false"/>
+        <dao name="MHostDao" class="com.cloud.bridge.persist.dao.MHostDaoImpl" singleton="false"/>
+        <dao name="SHostDao" class="com.cloud.bridge.persist.dao.SHostDaoImpl" singleton="false"/>
+        <dao name="UserCredentialsDao" class="com.cloud.bridge.persist.dao.UserCredentialsDaoImpl" singleton="false"/>
+        <dao name="BucketPolicyDao" class="com.cloud.bridge.persist.dao.BucketPolicyDaoImpl" singleton="false"/>
+        <dao name="MHostMountDao" class="com.cloud.bridge.persist.dao.MHostMountDaoImpl" singleton="false"/>
+        <dao name="SAclDao" class="com.cloud.bridge.persist.dao.SAclDaoImpl" singleton="false"/>
+        <dao name="SBucketDao" class="com.cloud.bridge.persist.dao.SBucketDaoImpl" singleton="false"/>
+        <dao name="SMetaDao" class="com.cloud.bridge.persist.dao.SMetaDaoImpl" singleton="false"/>
+        <dao name="SObjectDao" class="com.cloud.bridge.persist.dao.SObjectDaoImpl" singleton="false"/>
+        <dao name="SObjectItemDao" class="com.cloud.bridge.persist.dao.SObjectItemDaoImpl" singleton="false"/>
+        <dao name="MultiPartPartsDao" class="com.cloud.bridge.persist.dao.MultiPartPartsDaoImpl" singleton="false"/>
+        <dao name="MultiPartUploadsDao" class="com.cloud.bridge.persist.dao.MultiPartUploadsDaoImpl" singleton="false"/>
+        <dao name="MultipartMetaDao" class="com.cloud.bridge.persist.dao.MultipartMetaDaoImpl" singleton="false"/>
+        <dao name="UserCredentialsDao" class="com.cloud.bridge.persist.dao.UserCredentialsDaoImpl" singleton="false"/>
+    </awsapi-s3server>
+    
+</components.xml>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/deps/awsapi-lib/cloud-cglib.jar
----------------------------------------------------------------------
diff --git a/deps/awsapi-lib/cloud-cglib.jar b/deps/awsapi-lib/cloud-cglib.jar
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/deps/awsapi-lib/cloud-commons-dbcp-1.4.jar
----------------------------------------------------------------------
diff --git a/deps/awsapi-lib/cloud-commons-dbcp-1.4.jar b/deps/awsapi-lib/cloud-commons-dbcp-1.4.jar
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/deps/awsapi-lib/cloud-commons-pool-1.5.6.jar
----------------------------------------------------------------------
diff --git a/deps/awsapi-lib/cloud-commons-pool-1.5.6.jar b/deps/awsapi-lib/cloud-commons-pool-1.5.6.jar
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/deps/awsapi-lib/cloud-ehcache.jar
----------------------------------------------------------------------
diff --git a/deps/awsapi-lib/cloud-ehcache.jar b/deps/awsapi-lib/cloud-ehcache.jar
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/deps/awsapi-lib/cloud-javax.persistence-2.0.0.jar
----------------------------------------------------------------------
diff --git a/deps/awsapi-lib/cloud-javax.persistence-2.0.0.jar b/deps/awsapi-lib/cloud-javax.persistence-2.0.0.jar
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/deps/awsapi-lib/cloud-utils.jar
----------------------------------------------------------------------
diff --git a/deps/awsapi-lib/cloud-utils.jar b/deps/awsapi-lib/cloud-utils.jar
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/39aa7d86/utils/src/com/cloud/utils/db/Transaction.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/Transaction.java b/utils/src/com/cloud/utils/db/Transaction.java
index fc49bb0..755de8b 100755
--- a/utils/src/com/cloud/utils/db/Transaction.java
+++ b/utils/src/com/cloud/utils/db/Transaction.java
@@ -79,6 +79,7 @@ public class Transaction {
 
     public static final short CLOUD_DB = 0;
     public static final short USAGE_DB = 1;
+    public static final short AWSAPI_DB = 2;
     public static final short CONNECTED_DB = -1;
 
     private static AtomicLong s_id = new AtomicLong();
@@ -223,7 +224,18 @@ public class Transaction {
             return null;
         }
     }
-
+    public static Connection getStandaloneAwsapiConnection() {
+        try {
+            Connection conn = s_awsapiDS.getConnection();
+            if (s_connLogger.isTraceEnabled()) {
+                s_connLogger.trace("Retrieving a standalone connection for usage: dbconn" + System.identityHashCode(conn));
+            }
+            return conn;
+        } catch (SQLException e) {
+            s_logger.warn("Unexpected exception: ", e);
+            return null;
+        }
+}
     protected void attach(TransactionAttachment value) {
         _stack.push(new StackElement(ATTACHMENT, value));
     }
@@ -525,8 +537,18 @@ public class Transaction {
                     throw new CloudRuntimeException("Database is not initialized, process is dying?");
                 }
                 break;
+            case AWSAPI_DB:
+        	if(s_awsapiDS != null) {
+        	    _conn = s_awsapiDS.getConnection();
+        	} else {
+        	    s_logger.warn("A static-initialized variable becomes null, process is dying?");
+                throw new CloudRuntimeException("Database is not initialized, process is dying?");
+        	}
+                break;
+
             default:
-                throw new CloudRuntimeException("No database selected for the transaction");
+
+        	throw new CloudRuntimeException("No database selected for the transaction");
             }
             _conn.setAutoCommit(!_txn);
 
@@ -953,6 +975,7 @@ public class Transaction {
 
     private static DataSource s_ds;
     private static DataSource s_usageDS;
+    private static DataSource s_awsapiDS;
     static {
         try {
             final File dbPropsFile = PropertiesUtil.findConfigFile("db.properties");
@@ -1035,6 +1058,17 @@ public class Transaction {
             final PoolableConnectionFactory usagePoolableConnectionFactory = new PoolableConnectionFactory(usageConnectionFactory, usageConnectionPool,
                     new StackKeyedObjectPoolFactory(), null, false, false);
             s_usageDS = new PoolingDataSource(usagePoolableConnectionFactory.getPool());
+            
+            //configure awsapi db
+            final String awsapiDbName = dbProps.getProperty("db.awsapi.name");
+            final GenericObjectPool awsapiConnectionPool = new GenericObjectPool(null, usageMaxActive, GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION,
+            usageMaxWait, usageMaxIdle);
+            final ConnectionFactory awsapiConnectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://"+cloudHost + ":" + cloudPort + "/" + awsapiDbName +
+            "?autoReconnect="+usageAutoReconnect, cloudUsername, cloudPassword);
+            final PoolableConnectionFactory awsapiPoolableConnectionFactory = new PoolableConnectionFactory(awsapiConnectionFactory, awsapiConnectionPool,
+            new StackKeyedObjectPoolFactory(), null, false, false);
+            s_awsapiDS = new PoolingDataSource(awsapiPoolableConnectionFactory.getPool());
+            
         } catch (final Exception e) {
             final GenericObjectPool connectionPool = new GenericObjectPool(null, 5);
             final ConnectionFactory connectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/cloud", "cloud", "cloud");