[phylr] r54 committed - added connection pooling (using commons-dbcp)

0 views
Skip to first unread message

codesite...@google.com

unread,
Aug 13, 2009, 2:31:33 PM8/13/09
to phylr-...@googlegroups.com
Revision: 54
Author: dazhi.jiao
Date: Thu Aug 13 11:30:51 2009
Log: added connection pooling (using commons-dbcp)
http://code.google.com/p/phylr/source/detail?r=54

Modified:
/trunk/phylr-gsoc/pom.xml

/trunk/phylr-gsoc/src/main/java/org/nescent/phylr/relational/SRWRelationalDatabase.java

=======================================
--- /trunk/phylr-gsoc/pom.xml Wed Jul 29 07:01:00 2009
+++ /trunk/phylr-gsoc/pom.xml Thu Aug 13 11:30:51 2009
@@ -137,6 +137,27 @@
<type>jar</type>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>commons-dbutils</groupId>
+ <artifactId>commons-dbutils</artifactId>
+ <version>1.2</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>1.2.2</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<build>
<finalName>phylr-gsoc</finalName>
=======================================
---
/trunk/phylr-gsoc/src/main/java/org/nescent/phylr/relational/SRWRelationalDatabase.java
Wed Jul 29 13:27:21 2009
+++
/trunk/phylr-gsoc/src/main/java/org/nescent/phylr/relational/SRWRelationalDatabase.java
Thu Aug 13 11:30:51 2009
@@ -15,8 +15,14 @@
import java.util.Properties;
import java.util.StringTokenizer;

+import org.apache.commons.dbcp.ConnectionFactory;
+import org.apache.commons.dbcp.DriverManagerConnectionFactory;
+import org.apache.commons.dbcp.PoolableConnectionFactory;
+import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.commons.pool.ObjectPool;
+import org.apache.commons.pool.impl.GenericObjectPool;
import org.oclc.os.SRW.QueryResult;
import org.oclc.os.SRW.Record;
import org.oclc.os.SRW.SRWDatabase;
@@ -166,7 +172,15 @@
sb.append(" </indexInfo>\n");
return sb.toString();
}
-
+
+ private void setupDriver(String poolName, String connectURI, String
username, String passwd) throws ClassNotFoundException, SQLException {
+ ObjectPool connectionPool = new GenericObjectPool(null);
+ ConnectionFactory connectionFactory = new
DriverManagerConnectionFactory(connectURI,username, passwd);
+ PoolableConnectionFactory poolableConnectionFactory = new
PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true);
+ Class.forName("org.apache.commons.dbcp.PoolingDriver");
+ PoolingDriver driver = (PoolingDriver)
DriverManager.getDriver("jdbc:apache:commons:dbcp:");
+ driver.registerPool(poolName,connectionPool);
+ }

@Override
public QueryResult getQueryResult(String queryStr,
@@ -270,17 +284,21 @@
maxTerms = 10;
position = 1;

+ String url = dbProperties.getProperty("SRWRelationalDatabase.url");
+ String username = dbProperties.getProperty("SRWRelationalDatabase.user");
+ String password =
dbProperties.getProperty("SRWRelationalDatabase.password");
String driver = dbProperties.getProperty("SRWRelationalDatabase.driver");
try {
Class.forName(driver);
+ setupDriver(dbname, url, username, password);
} catch (ClassNotFoundException e1) {
log.error("Database driver not found: " + driver);
throw new InstantiationException("Database driver not found: " +
driver);
- }
-
- String url = dbProperties.getProperty("SRWRelationalDatabase.url");
- String username = dbProperties.getProperty("SRWRelationalDatabase.user");
- String password =
dbProperties.getProperty("SRWRelationalDatabase.password");
+ } catch (SQLException e) {
+ log.error("Can't setup database pool: ", e);
+ throw new InstantiationException("Database connection pool can't be
initialized");
+ }
+
log.debug("db url=" + url);

if (url == null) {
@@ -289,10 +307,9 @@
}

try {
- connection = DriverManager.getConnection(url, username, password);
+ connection = DriverManager.getConnection("jdbc:apache:commons:dbcp:" +
dbname);
} catch (Exception e) {
- log.error("Unable to create connection with url=" + url
- + " for database " + dbname);
+ log.error("Unable to create connection for database " + dbname);
log.error(e, e);
throw new InstantiationException(e.getMessage());
}

Reply all
Reply to author
Forward
0 new messages