01: /* Copyright 2004 The JA-SIG Collaborative. All rights reserved.
02: * See license distributed with this file and
03: * available online at http://www.uportal.org/license.html
04: */
05:
06: package org.jasig.portal.rdbm.pool;
07:
08: import javax.sql.DataSource;
09:
10: import org.apache.commons.dbcp.BasicDataSource;
11:
12: /**
13: * DBCPDataSourceFactory produces an instance of {@link BasicDataSource}
14: * for the given driver class name, username, password, and URL, defaulting
15: * the maxActive, maxIdle, and maxWait properties.
16: *
17: * This class is final because it is not designed to be subclassed.
18: *
19: * @author Eric Dalquist <a href="mailto:edalquist@unicon.net">edalquist@unicon.net</a>
20: * @version $Revision: 36594 $ $Date: 2006-05-19 13:56:44 -0700 (Fri, 19 May 2006) $
21: * @since uPortal 2.5
22: */
23: public final class DBCPDataSourceFactory implements
24: IPooledDataSourceFactory {
25:
26: public DataSource createPooledDataSource(
27: final String driverClassName, final String userName,
28: final String password, final String url,
29: final boolean poolPreparedStatements) {
30:
31: final BasicDataSource ds = new BasicDataSource();
32:
33: ds.setDriverClassName(driverClassName);
34: ds.setUsername(userName);
35: ds.setPassword(password);
36: ds.setUrl(url);
37: ds.setPoolPreparedStatements(poolPreparedStatements);
38:
39: //TODO Create a properties file to for DBCP
40:
41: // I'd like to see us move to using Spring to produce and manage our
42: // DataSource singletons rather than creating another properties file for
43: // the configuration of this use of DBCP.
44: //
45: // Think of Spring as the ultimate DataSource factory. Want some particular
46: // configuration of one of the standard dbcp DataSource implementations?
47: // It can do that. Want to get your DataSource from JNDI? It can do that.
48: // Want to wire together our own custom DataSource implementation?
49: // It can do that too. My personal viewpoint is that the factory API
50: // in this package isn't buying us much beyond what we'd get if we wired
51: // together singleton DataSources directly in our Spring configuration.
52: // -Andrew Petro
53:
54: ds.setMaxActive(100);
55: ds.setMaxIdle(30);
56: ds.setMaxWait(10000);
57:
58: return ds;
59: }
60: }
|