[jira] [Resolved] (DBCP-412) dbcp2.PoolableConnection.close raises NullPointerException
[ https://issues.apache.org/jira/browse/DBCP-412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Phil Steitz resolved DBCP-412. -- Resolution: Fixed Fixed examples in r1659726. > 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.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 connectionPool = new > GenericObjectPool<>(poolableConnectionFactory); > PoolingDataSource 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.3.4#6332)
[jira] [Resolved] (DBCP-412) dbcp2.PoolableConnection.close raises NullPointerException
[ https://issues.apache.org/jira/browse/DBCP-412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Phil Steitz resolved DBCP-412. -- Resolution: Fixed PDS constructor check added in r1592119 > 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 connectionPool = new > GenericObjectPool<>(poolableConnectionFactory); > PoolingDataSource 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)