[Biojava-dev] JDBCPooledDataSource regression

Richard Holland holland at ebi.ac.uk
Tue Apr 3 10:00:01 UTC 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Great stuff. You should commit it when you get your CVS account. :)

There's one or two typos (can't spell deprecated!) but I'm sure once you
get the rest of BioJava into Eclipse or something to make this change
permanent they'll show up.

cheers,
Richard

Andy Yates wrote:
> Okay I've attached the fix here.
> 
> I just did this in a text editor but I believe that the imports are
> okay. If you can just do a quick scan as well to make sure I haven't
> deleted anything that was very important.
> 
> I'll get on to the helpdesk now as well :)
> 
> Andy
> 
> Richard Holland wrote:
> Andy could you make the change to your local copy of the source file and
> email the file to me, that way I can make sure I don't get it wrong when
> I commit it.
> 
> Richard.
> 
> PS. You should probably have your own CVS account - email the OBF
> helpdesk and ask for one, saying I told you to. :)
> 
> 
> Andy Yates wrote:
>>>> Thomas Down wrote:
>>>>> On 31 Jan 2007, at 12:06, Andy Yates wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Sorry I was meaning if that if that method just becomes:
>>>>>>
>>>>>> public static DataSource getDataSource(final String driver,
>>>>>>                                          final String url,
>>>>>>                                          final String user,
>>>>>>                                          final String pass)
>>>>>>     throws Exception {
>>>>>>
>>>>>>     BasicDataSource ds = new BasicDataSource();
>>>>>>     ds.setUrl(url);
>>>>>>     ds.setDriverClassName(driver);
>>>>>>     ds.setUsername(user);
>>>>>>     ds.setPassword(pass);
>>>>>>     // Set BasicDataSource properties such as maxActive and
>>>>>> maxIdle, as described in
>>>>>>     //
>>>>>> http://jakarta.apache.org/commons/dbcp/api/org/apache/commons/dbcp/BasicDataSource.html
>>>>>>
>>>>>>     ds.setMaxActive(10);
>>>>>>     ds.setMaxIdle(5);
>>>>>>     ds.setMaxWait(10000);
>>>>>>
>>>>>>     return ds;
>>>>>>   }
>>>>>>
>>>>>> Does that still work?
>>>>> Hmmm, I was assuming that BasicDataSource didn't actually do any
>>>>> pooling itself, and that you needed another layer on top to manage a
>>>>> connection pool -- that seems to be how all previous revisions of
>>>>> JDBCConnectionPool worked, so I guess I wasn't alone in thinking
>>>>> this.  But yes, BasicDataSource does seem to do pooling itself
>>>>> (confirmed by reading the source), so maybe your simpler version is
>>>>> a better idea.  It certainly works okay for me.
>>>>>
>>>>>            Thomas.
>>>> That's what I thought should have happened :). Can I suggest that
>>>> this revised version goes into CVS? Anyone got any objections?
>>>>
>>>> Andy
>>>> _______________________________________________
>>>> biojava-dev mailing list
>>>> biojava-dev at lists.open-bio.org
>>>> http://lists.open-bio.org/mailman/listinfo/biojava-dev
>>>>

> ------------------------------------------------------------------------

> /*
>  *                    BioJava development code
>  *
>  * This code may be freely distributed and modified under the
>  * terms of the GNU Lesser General Public Licence.  This should
>  * be distributed with the code.  If you do not have a copy,
>  * see:
>  *
>  *      http://www.gnu.org/copyleft/lesser.html
>  *
>  * Copyright for this code is held jointly by the individual
>  * authors.  These should be listed in @author doc comments.
>  *
>  * For more information on the BioJava project and its aims,
>  * or to join the biojava-l mailing list, visit the home page
>  * at:
>  *
>  *      http://www.biojava.org/
>  *
>  */
> package org.biojava.utils;

> import javax.sql.DataSource;

> import org.apache.commons.dbcp.BasicDataSource;
> import org.apache.commons.dbcp.PoolingDataSource;
> import org.apache.commons.pool.ObjectPool;

> /**
> * Returns a DataSource that implements connection pooling
> *
> * Uses Jakarta Commons DBCP and Pool packages.
> * See the description of the dbcp package at 
> * http://jakarta.apache.org/commons/dbcp/api/overview-summary.html#overview_description
> *
> * @author Simon Foote
> * @author Len Trigg
> */

> public class JDBCPooledDataSource {

>   public static DataSource getDataSource(final String driver, 
>                                          final String url,
>                                          final String user,
>                                          final String pass)
>     throws Exception {

>     BasicDataSource ds = new BasicDataSource();
>     ds.setUrl(url);
>     ds.setDriverClassName(driver);
>     ds.setUsername(user);
>     ds.setPassword(pass);
>     // Set BasicDataSource properties such as maxActive and maxIdle, as described in
>     // http://jakarta.apache.org/commons/dbcp/api/org/apache/commons/dbcp/BasicDataSource.html
>     ds.setMaxActive(10);
>     ds.setMaxIdle(5);
>     ds.setMaxWait(10000);

>     return dataSource;
>   }


>   // Adds simple equals and hashcode methods so that we can compare if
>   // two connections are to the same database. This will fail if the
>   // DataSource is redirected to another database etc (I doubt this is
>   // ever likely to be used).
>   /**
>    * @depercated This is no longer used in favor of {@link BasicDataSource}
>    * from DBCP
>    */
>   static class MyPoolingDataSource extends PoolingDataSource {
>     final String source;
>     public MyPoolingDataSource(ObjectPool connectionPool, String source) {
>       super(connectionPool);
>       this.source = source;
>     }
>     public boolean equals(Object o2) {
>       if ((o2 == null) || !(o2 instanceof MyPoolingDataSource)) {
>         return false;
>       }
>       MyPoolingDataSource b2 = (MyPoolingDataSource) o2;
>       return source.equals(b2.source);
>     }
>     public int hashCode() {
>       return source.hashCode();
>     }
>   }


>   public static void main(String[] args) {
>     try {
>       DataSource ds1 = getDataSource("org.hsqldb.jdbcDriver", "jdbc:hsqldb:/tmp/hsqldb/biosql", "sa", "");
>       DataSource ds2 = getDataSource("org.hsqldb.jdbcDriver", "jdbc:hsqldb:/tmp/hsqldb/biosql", "sa", "");
>       System.err.println(ds1);
>       System.err.println(ds2);
>       System.err.println(ds1.equals(ds2));
>     } catch (Exception e) {
>       e.printStackTrace();
>     }
>   }
> }


> ------------------------------------------------------------------------

> _______________________________________________
> biojava-dev mailing list
> biojava-dev at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/biojava-dev
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGEiWh4C5LeMEKA/QRAgYbAJ4yoE6dsLuOOS8sg1wOCybV6rsNUwCeN0c8
oiFz/0yblV4P8a35RbU+nDM=
=imiK
-----END PGP SIGNATURE-----



More information about the biojava-dev mailing list