commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] [Reopened] (DBCP-412) dbcp2.PoolableConnection.close raises NullPointerException
Date Fri, 15 Aug 2014 15:18:19 GMT

     [ https://issues.apache.org/jira/browse/DBCP-412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Phil Steitz reopened DBCP-412:
------------------------------


Thanks for pointing out the inconsistency in current code in the examples, Sebastien.  The
check added in r1592119 makes it unnecessary to add the setPool (once this code is released).
 Reopening as we should make the examples consistent.  I think we should add the setPool calls
for now as current released code requires them.  Will get to this ASAP unless someone beats
me to it. 

> dbcp2.PoolableConnection.close raises NullPointerException
> ----------------------------------------------------------
>
>                 Key: DBCP-412
>                 URL: https://issues.apache.org/jira/browse/DBCP-412
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Mac OSX, Java 7, SQLAzure
>            Reporter: Davide Caroselli
>            Priority: Minor
>              Labels: NullPointerException, PoolableConnection
>             Fix For: 2.0.1
>
>         Attachments: DBCP-412.patch
>
>
> I found a critical error while closing a PoolableConnection.
> Here's the code to reproduce the bug (largely copied from the example shown in the Apache
DBCP site):
> {code:title=PoolingDataSourceExample2.java|borderStyle=solid}
> public static void main(String[] args) throws Throwable {
>     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
>     DataSource dataSource = setupDataSource(jdbcUrl);
>     Connection connection = null;
>     PreparedStatement statement = null;
>     ResultSet result = null;
>     try {
>         connection = dataSource.getConnection();
>         statement = connection.prepareStatement("SELECT 1");
>         result = statement.executeQuery();
>     } finally {
>         result.close();
>         statement.close();
>         connection.close();
>     }
> }
> public static DataSource setupDataSource(String connectURI) {
>     ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,
null);
>     PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,
null);
>     ObjectPool<PoolableConnection> connectionPool = new GenericObjectPool<>(poolableConnectionFactory);
>     PoolingDataSource<PoolableConnection> dataSource = new PoolingDataSource<>(connectionPool);
>     return dataSource;
> }
> {code}
> When the code tries to close the connection (in the final block), an exception is raised:
> {code:title=PoolingDataSourceExample2.java|borderStyle=solid}
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.commons.dbcp2.PoolableConnection.close(PoolableConnection.java:151)
> 	at org.apache.commons.dbcp2.DelegatingConnection.closeInternal(DelegatingConnection.java:235)
> 	at org.apache.commons.dbcp2.DelegatingConnection.close(DelegatingConnection.java:218)
> 	at org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:212)
> 	at dbcp.PoolingDataSourceExample2.closeQuietly(PoolingDataSourceExample2.java:64)
> 	at dbcp.PoolingDataSourceExample2.main(PoolingDataSourceExample2.java:43){code}
> As I can see, the problem is the "_pool" variable inside PoolableConnection but I could
not find any solution.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message