[Biojava-dev] JDBCPooledDataSource regression

Andy Yates ayates at ebi.ac.uk
Wed Jan 31 13:25:12 UTC 2007


Cheers mate. If this hash/equals is a problem then this can be solved 
later on.

Richard Holland wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> I've committed your changes Andy.
> 
> Thomas, I wouldn't worry about OntologySQL. It's highly deprecated and
> not supported - the whole biojavax/Hibernate thing made that code redundant.
> 
> 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();
>>     }
>>   }
>> }
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2.2 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
> 
> iD8DBQFFwJSu4C5LeMEKA/QRAgt1AJ9dtk3SBbDwtah469igyc9DYWGzMwCgqAad
> X1KXpdlqqhBfuL1MisMj/yo=
> =nlGe
> -----END PGP SIGNATURE-----



More information about the biojava-dev mailing list