You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Mark Thomas (JIRA)" <ji...@apache.org> on 2013/12/03 11:48:35 UTC

[jira] [Resolved] (DBCP-366) Getting Exception when trying to get the PrepareStatement from Connection From DBCP Pool

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

Mark Thomas resolved DBCP-366.
------------------------------

    Resolution: Invalid

You are continuing to try and use the connection after you have closed it. That is not allowed.

> Getting Exception when trying to get the PrepareStatement from Connection From DBCP Pool
> ----------------------------------------------------------------------------------------
>
>                 Key: DBCP-366
>                 URL: https://issues.apache.org/jira/browse/DBCP-366
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.2.2
>         Environment: Linux machine
>            Reporter: saroj kumar balusu
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Using commons-dbcp-1.2.2.jar version with Tomcat version 6.0.29.
> Getting the following exception when trying to get the java.sql.PrepareStatement using a Connection from DBCP Pool:
> {noformat}
> java.sql.SQLException: Connection is closed.
>         at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.checkOpen(PoolingDriver.java:263)
>         at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.prepareStatement(PoolingDriver.java:366)
> {noformat}
> This is the configuration we are using for creating Connection Pool from DBCP:
> {code:java}
> public static void setupDriver(String connectURI, String userName,
> 			String dbPassword, String maxActive, String minIdle,
> 			String maxWait, String poolName) throws Exception {
> 		GenericObjectPool.Config config = new GenericObjectPool.Config();
> 		config.maxActive = Integer.parseInt(maxActive);
> 		config.minIdle = Integer.parseInt(minIdle);
> 		config.maxWait = Integer.parseInt(maxWait);
> 		config.whenExhaustedAction = 2;
> 		config.minEvictableIdleTimeMillis = 1800000;
> 		config.timeBetweenEvictionRunsMillis = 1800000;
> 		config.numTestsPerEvictionRun = 3;
> 		config.testOnBorrow = true;
> 		config.testOnReturn = true;
> 		config.testWhileIdle = true;
> 		ObjectPool connectionPool = new GenericObjectPool(null, config);
> 		ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
> 				connectURI, userName, dbPassword);
> 		PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
> 				connectionFactory, connectionPool, null, null, false, true);
> 		poolableConnectionFactory.setValidationQuery("select 1 from dual");
> 		driver = new PoolingDriver();
> 		driver.registerPool(poolName, connectionPool);
> 		driver.setAccessToUnderlyingConnectionAllowed(true);
> 		// PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
> 		// return dataSource;
> }
> {code}
> The following code is used to get the Connection:
> {code:java}
> public java.sql.Connection getConnection(poolName) {
>         Connection con = DriverManager.getConnection("jdbc:apache:commons:dbcp:"+poolName);
>         return con;				
> }
> {code}
> The following code is used to release the connection:
> {code:java}
> public void release(Connection conn) throws DBException {
> 	try {
> 		conn.close();
> 	} catch (Exception e) {
> 		throw new Exception(e.getMessage(), e);
> 	}
> }
> {code}
> Can you let us know what might be the exact reason for the following exception?



--
This message was sent by Atlassian JIRA
(v6.1#6144)