jmcnally 01/12/30 09:31:47
Modified: proposals/jdbc2pool/org/apache/torque/jdbc2pool Tag:
JDBC2POOL_BRANCH TorqueDataSource.java
Log:
make sure to get the pool after adding it to the map of pools.
improved the thread-safety when creating a new pool
Revision Changes Path
No revision
No revision
1.1.2.1 +14 -6
jakarta-turbine-torque/proposals/jdbc2pool/org/apache/torque/jdbc2pool/TorqueDataSource.java
Index: TorqueDataSource.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-torque/proposals/jdbc2pool/org/apache/torque/jdbc2pool/TorqueDataSource.java,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- TorqueDataSource.java 15 Aug 2001 17:38:54 -0000 1.1
+++ TorqueDataSource.java 30 Dec 2001 17:31:47 -0000 1.1.2.1
@@ -78,7 +78,7 @@
* Torque's default connection pool DataSource
*
* @author <a href="mailto:[EMAIL PROTECTED]">John D. McNally</a>
- * @version $Id: TorqueDataSource.java,v 1.1 2001/08/15 17:38:54 jmcnally Exp $
+ * @version $Id: TorqueDataSource.java,v 1.1.2.1 2001/12/30 17:31:47 jmcnally Exp $
*/
public class TorqueDataSource
implements DataSource, Referenceable, Serializable, ObjectFactory
@@ -168,24 +168,32 @@
try
{
registerPool(username, password);
+ pool = (ConnectionPool)pools.get(key);
}
catch (Exception e)
{
- //ignore for now, should wrap in SQLException, !FIXME!
+ throw new SQLException(e.getMessage());
}
}
return pool.getConnection(username, password).getConnection();
}
- private void registerPool(String username, String password)
+ synchronized private void registerPool(String username, String password)
throws javax.naming.NamingException
{
+ String key = getDataSourceName() + username;
+ if ( !pools.containsKey(key) )
+ {
Context ctx = new InitialContext();
- ConnectionPoolDataSource cpds =
- (ConnectionPoolDataSource)ctx.lookup(getDataSourceName());
+ ConnectionPoolDataSource cpds = (ConnectionPoolDataSource)
+ ctx.lookup("jdbc/" + getDataSourceName());
ConnectionPool pool = new ConnectionPool(cpds, username, password);
- pools.put(username, pool);
+ // avoid ConcurrentModificationException
+ Map newPools = new HashMap(pools);
+ newPools.put(key, pool);
+ pools = newPools;
+ }
}
/**
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>