[dbcp] outdated and confusing documentation

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[dbcp] outdated and confusing documentation

Steve Cohen
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?

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [dbcp] outdated and confusing documentation

Phil Steitz
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: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [dbcp] outdated and confusing documentation

Steve Cohen
Yes, thanks, I also noticed the broken link and found the sample,
figuring it must exist somewhere.  That code is better.

I will open JIRA, thanks.


On 07/31/2017 01:16 PM, Phil Steitz wrote:

> 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: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Loading...