commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phil Steitz <phil.ste...@gmail.com>
Subject Re: [dbcp] outdated and confusing documentation
Date Mon, 31 Jul 2017 18:16:41 GMT
On 7/31/17 9:07 AM, Steve Cohen wrote:
> The DBCP package description page is referred to from the Overview page
> as containing important information on usage of the package.
>
> The following sample code is provided there:
>
>
>> GenericObjectPool connectionPool = new GenericObjectPool(null);
>> ConnectionFactory connectionFactory = new DriverManagerConnectionFactory("jdbc:some:connect:string",
"username", "password");
>> PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true);
>> PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
>
>
> The third line appears out of date:  No such constructor of
> PoolableConnectionFactory appears to exist.  Instead I find
>
> PoolableConnectionFactory(ConnectionFactory connFactory, ObjectName
> dataSourceJmxName)
>
> OK, I can use that.
>
> But ...
> Eclipse is warning me that this PoolableConnectionFactory is not used in
> the code.  And it's right!  Nothing ties the poolableConnectionFactory
> object we create in that line to anything else, and it doesn't appear to
> be needed.
>
> At any rate, I'm confused.  What role does this object play in the
> scenario the documentation is referring to?

The package javadoc was not updated to reflect the API changes made
in dbcp2.  It would be good to raise a JIRA for this. 
Unfortunately, the examples link appears now to be broken, but there
is an example in the /doc directory of the source distribution that
shows how to set up a PoolingDataSource.  You can also see this in
the unit tests.  Here is the relevant bit of the sample code from
the /doc sources:

 public static DataSource setupDataSource(String connectURI) {
        //
        // First, we'll create a ConnectionFactory that the
        // pool will use to create Connections.
        // We'll use the DriverManagerConnectionFactory,
        // using the connect string passed in the command line
        // arguments.
        //
        ConnectionFactory connectionFactory =
            new DriverManagerConnectionFactory(connectURI,null);

        //
        // Next we'll create the PoolableConnectionFactory, which wraps
        // the "real" Connections created by the ConnectionFactory with
        // the classes that implement the pooling functionality.
        //
        PoolableConnectionFactory poolableConnectionFactory =
            new PoolableConnectionFactory(connectionFactory, null);

        //
        // Now we'll need a ObjectPool that serves as the
        // actual pool of connections.
        //
        // We'll use a GenericObjectPool instance, although
        // any ObjectPool implementation will suffice.
        //
        ObjectPool<PoolableConnection> connectionPool =
                new GenericObjectPool<>(poolableConnectionFactory);
       
        // Set the factory's pool property to the owning pool
        poolableConnectionFactory.setPool(connectionPool);

        //
        // Finally, we create the PoolingDriver itself,
        // passing in the object pool we created.
        //
        PoolingDataSource<PoolableConnection> dataSource =
                new PoolingDataSource<>(connectionPool);

        return dataSource;
    }

hth,

Phil
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message