Re: [dbcp]Closed Connection or Exhausted Resultset error

2015-04-28 Thread Phil Steitz
On 4/27/15 11:26 PM, Rohini T Nagaraj wrote:
 Hi,
 We are using the DBCP -org.apache.commons-dbcp-1.2.2.jar for connection 
 pooling.

I don't think so.  You are using RS.isClosed below, which is JDK
1.6+.  So assume you are using DBCP 1.4?  Pls verify  DBCP and pool
version.
  Connection pool is created as shown in below code and had set the 
 connection pool setting  (removed evictable time settings). There is no 
 issue in getting a connection. This part of the code works fine.

   GenericObjectPool connectionPool = new GenericObjectPool();
   connectionPool.setMaxActive(25); 
 connectionPool.setMaxIdle(25); 
 connectionPool.setTestOnReturn(false);
 connectionPool.setTestOnBorrow(true);
 connectionPool.setTestWhileIdle(false);
 GenericKeyedObjectPoolFactory statementPoolFactory = new 
 GenericKeyedObjectPoolFactory(null
 ,-1,GenericKeyedObjectPool.WHEN_EXHAUSTED_FAIL,0,1,dbEndPt.getMaxPreparedStatement());
 ConnectionFactory connectionFactory = new 
 DataSourceConnectionFactory(ds);
 boolean defaultReadOnly = false;
 CIPoolableConnectionFactory poolableConnectionFactory = new  
 CIPoolableConnectionFactory(connectionFactory,connectionPool,statementPoolFactory,getValidationQuery(dbEndPt),defaultReadOnly,
 false); 
 PoolingDataSource pds = new 
 DelegatePoolingDataSource(connectionPool);
 pds.setAccessToUnderlyingConnectionAllowed(true);
   pds.getConnection();


 Later when we run this part of the code , it takes almost 12mins to get 
 the resultset. Since customer has 37k packages ,it might have taken this 
 time. But after that we get the error as Closed Resultset and it does not 
 enter the while loop.This happens only when we use datasource connection 
 pooling. Otherwise this part of the code works fine in a standalone 
 program and takes 10mins to get the resultset.Please suggest us connection 
 pool settings to handle the 37k packages on the Oracle side.Thanks.

 ResultSet rs = metaData.getProcedureColumns(package_name, 
 schema, storedProcedure, null ); 
  
  
   logger.warning(Got resultset.Is ResultSet closed = 
 +rs.isClosed()+\n);

   if (rs != null){

  
   logger.warning(rs is not equal to NULL.Is ResultSet 
 closed = +rs.isClosed()+\n);

   while( rs.next() ) {

 //code to get the params
 }

 ERROR:
 Apr 27, 2015 9:17:36 AM com.approuter.framework.util.ResourceBundleHelper 
 getString
 WARNING: Could not find the resource menu.edit.label in bundle: 
 orchestration using the resource bundle service. Fallback to old style

 Apr 27, 2015 9:29:07 AM 
 com.approuter.studio.connectors.database.util.DBHelper 
 getStoredProcedureMetaData
 WARNING: Got resultset.Is ResultSet closed = false

 Apr 27, 2015 9:29:07 AM 
 com.approuter.studio.connectors.database.util.DBHelper 
 getStoredProcedureMetaData
 WARNING: rs is not equal to NULL.Is ResultSet closed = true

 java.sql.SQLException: Closed Resultset: next
  at 
 oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:565)
  at 
 com.approuter.studio.connectors.database.util.DBHelper.getStoredProcedureMetaData(DBHelper.java:1052)//this
  
 line points to the whileloop

I am having a hard time piecing this together.  Pls include omitted
code.  Does the code call rs.next within the body of the loop as well?

Phil


 Thanks and Regards,
 Rohini T Nagaraj,
 WebSphere CastIron QA Team,
  IBM INDIA PRIVATE LIMITED,
 DC1-3A-003,DLF IT PARK,Chennai - 600089
 Extn # : 21820 and Mobile #: 9962020675



 From:   Phil Steitz phil.ste...@gmail.com
 To: Commons Users List user@commons.apache.org
 Date:   04/22/2015 07:03 PM
 Subject:Re: [dbcp]Closed Connection or Exhausted Resultset error



 On 4/22/15 5:18 AM, Rohini T Nagaraj wrote:
 Hi All,

 The Oracle DB has 37k packages. The issue is seen after running the 
 below 
 query from the program or when using 
 DatabaseMetadata.getProcedureColumns()  in a program . We are seeing 
 these 
 errors  Exhausted Resultset (SQL Code =9 and vendor code=17,011)  
 or 
 Closed Connection :next (SQL code=08003 , Vendor code=17,008).
 Please post a stack trace showing one or both of these errors.
 Something happening to connection or resultset getting closed after 
 running the query/getProcedureColumns call. We have investigated further 
 and see this issue of Exhausted Resultset/Connection getting closed only 
 when we use the datasource connection pool logic.
 When we run a standalone java program with the query/getProcedureColumns 
 call , it took 10mins for the customer to get the output and there were 
 no 
 issues.We want the same behavior with datasource connection pool logic .


 We are using Tomcat sevrer and 
 org.apache.commons.pool.impl.GenericObjectPool connection pool.We have 
 these connection pool settings done. 
 

Re: [dbcp]Closed Connection or Exhausted Resultset error

2015-04-28 Thread Rohini T Nagaraj
Hi ,

We use org.apache.commons-dbcp-1.2.2.jar and 
com.springsource.org.apache.commons.pool-1.4.0.jar. Looks like we should 
be using a java less than 1.4 as per this link 
http://commons.apache.org/proper/commons-dbcp/. But we are using java 1.7. 
Please confirm if this incompatibility is causing this issue. Here is the 
full method for review.Thanks.

public static java.util.ListStoredProcedureTableData 
getStoredProcedureMetaData(String package_name,String schema, String 
storedProcedure, String encoding) {
DatabaseMetaData metaData = 
DBConnectionManager.getDatabaseMetaData();
java.util.ListStoredProcedureTableData list = new 
ArrayListStoredProcedureTableData();
String parameterName;
String dataType;
String type;
String size; 
short shortType;
StoredProcedureTableData data;
ResultSet rs = null;
 
try {
 storedProcedure=storedProcedure.substring(package_name.length()+1);
  rs = metaData.getProcedureColumns(package_name, schema, 
storedProcedure, null ); //$NON-NLS-1$ 
  logger.warning(Got resultset.Is ResultSet closed = 
+rs.isClosed()+\n);
  if (rs != null){ 
  logger.warning(rs is not equal to NULL.Is ResultSet 
closed = +rs.isClosed()+\n);
  while( rs.next() ) { 
  logger.warning(In While loop.Is ResultSet closed = 
+rs.isClosed()+\n);
parameterName = rs.getString( 4 ); // COLUMN_NAME (7) for 
query 
parameterName = getValidParameterName( parameterName );
logger.warning(The Parametername = +parameterName);
logger.warning(After 1st param.Is ResultSet closed = 
+rs.isClosed()+\n); 
dataType = getDataType( rs.getInt( 6 ), rs.getString( 7 ) 
); //DATA_TYPE, TYPE_NAME 
shortType = rs.getShort( 5 );//COLUMN_TYPE
type = getColumnType( shortType );
logger.warning(The DataType = +dataType);  
logger.warning(The Type = +type+ TYPE_RETURN = 
+TYPE_RETURN);
size = Integer.toString( rs.getInt( 8 ) ); 
logger.warning(The Size = +size); 
short scale = rs.getShort( 10 ); //(18) for query
logger.warning(The Scale = +scale);
if( scale  0 ) {
  size = size + , + scale; //$NON-NLS-1$
} 
data = new StoredProcedureTableData( true, parameterName, 
dataType, type, encoding, size , TYPE_RETURN.equals(type));
list.add( data );
  }
  rs.close();
  rs = null;
} 
}catch( SQLException e ) {
  connectionError( e );
  e.printStackTrace();
}finally { 
if (rs != null) {
  try { 
  rs.close(); 
  logger.warning(In finally.Is ResultSet closed = 
+rs.isClosed()+\n);
  } catch (SQLException e) {
  e.printStackTrace();
  }
}
rs = null;
}
return list;
}



Thanks and Regards,
Rohini T Nagaraj,
WebSphere CastIron QA Team,
 IBM INDIA PRIVATE LIMITED,
DC1-3A-003,DLF IT PARK,Chennai - 600089
Extn # : 21820 and Mobile #: 9962020675



From:   Phil Steitz phil.ste...@gmail.com
To: Commons Users List user@commons.apache.org
Date:   04/28/2015 07:14 PM
Subject:Re: [dbcp]Closed Connection or Exhausted Resultset error



On 4/27/15 11:26 PM, Rohini T Nagaraj wrote:
 Hi,
 We are using the DBCP -org.apache.commons-dbcp-1.2.2.jar for connection 
 pooling.

I don't think so.  You are using RS.isClosed below, which is JDK
1.6+.  So assume you are using DBCP 1.4?  Pls verify  DBCP and pool
version.
  Connection pool is created as shown in below code and had set the 
 connection pool setting  (removed evictable time settings). There is no 
 issue in getting a connection. This part of the code works fine.

   GenericObjectPool connectionPool = new GenericObjectPool();
   connectionPool.setMaxActive(25); 
 connectionPool.setMaxIdle(25); 
 connectionPool.setTestOnReturn(false);
 connectionPool.setTestOnBorrow(true);
 connectionPool.setTestWhileIdle(false);
 GenericKeyedObjectPoolFactory statementPoolFactory = new 
 GenericKeyedObjectPoolFactory(null
 
,-1,GenericKeyedObjectPool.WHEN_EXHAUSTED_FAIL,0,1,dbEndPt.getMaxPreparedStatement());
 ConnectionFactory connectionFactory = new 
 DataSourceConnectionFactory(ds);
 boolean defaultReadOnly = false;
 CIPoolableConnectionFactory poolableConnectionFactory = new 
 
CIPoolableConnectionFactory(connectionFactory,connectionPool,statementPoolFactory,getValidationQuery(dbEndPt),defaultReadOnly,
 false); 
 PoolingDataSource pds = new 
 

Re: [dbcp]Closed Connection or Exhausted Resultset error

2015-04-28 Thread Phil Steitz
On 4/28/15 9:47 AM, Rohini T Nagaraj wrote:
 Hi ,

 We use org.apache.commons-dbcp-1.2.2.jar and 
 com.springsource.org.apache.commons.pool-1.4.0.jar. Looks like we should 
 be using a java less than 1.4 as per this link 
 http://commons.apache.org/proper/commons-dbcp/. But we are using java 1.7. 
 Please confirm if this incompatibility is causing this issue. Here is the 
 full method for review.Thanks.

That would be a problem.  Given that your code compiles, I suspect
what is going on is that you are somehow accessing connections
directly (not actually using DBCP), which will cause all kinds of
problems.  You need to both upgrade dbcp and pool versions and use
DBCP to actually manage connections, resultsets, etc.

Phil

 public static java.util.ListStoredProcedureTableData 
 getStoredProcedureMetaData(String package_name,String schema, String 
 storedProcedure, String encoding) {
 DatabaseMetaData metaData = 
 DBConnectionManager.getDatabaseMetaData();
 java.util.ListStoredProcedureTableData list = new 
 ArrayListStoredProcedureTableData();
 String parameterName;
 String dataType;
 String type;
 String size; 
 short shortType;
 StoredProcedureTableData data;
 ResultSet rs = null;
  
 try {
  storedProcedure=storedProcedure.substring(package_name.length()+1);
   rs = metaData.getProcedureColumns(package_name, schema, 
 storedProcedure, null ); //$NON-NLS-1$ 
   logger.warning(Got resultset.Is ResultSet closed = 
 +rs.isClosed()+\n);
   if (rs != null){ 
   logger.warning(rs is not equal to NULL.Is ResultSet 
 closed = +rs.isClosed()+\n);
   while( rs.next() ) { 
   logger.warning(In While loop.Is ResultSet closed = 
 +rs.isClosed()+\n);
 parameterName = rs.getString( 4 ); // COLUMN_NAME (7) for 
 query 
 parameterName = getValidParameterName( parameterName );
 logger.warning(The Parametername = +parameterName);
 logger.warning(After 1st param.Is ResultSet closed = 
 +rs.isClosed()+\n); 
 dataType = getDataType( rs.getInt( 6 ), rs.getString( 7 ) 
 ); //DATA_TYPE, TYPE_NAME 
 shortType = rs.getShort( 5 );//COLUMN_TYPE
 type = getColumnType( shortType );
 logger.warning(The DataType = +dataType);  
 logger.warning(The Type = +type+ TYPE_RETURN = 
 +TYPE_RETURN);
 size = Integer.toString( rs.getInt( 8 ) ); 
 logger.warning(The Size = +size); 
 short scale = rs.getShort( 10 ); //(18) for query
 logger.warning(The Scale = +scale);
 if( scale  0 ) {
   size = size + , + scale; //$NON-NLS-1$
 } 
 data = new StoredProcedureTableData( true, parameterName, 
 dataType, type, encoding, size , TYPE_RETURN.equals(type));
 list.add( data );
   }
   rs.close();
   rs = null;
 } 
 }catch( SQLException e ) {
   connectionError( e );
   e.printStackTrace();
 }finally { 
 if (rs != null) {
   try { 
   rs.close(); 
   logger.warning(In finally.Is ResultSet closed = 
 +rs.isClosed()+\n);
   } catch (SQLException e) {
   e.printStackTrace();
   }
 }
 rs = null;
 }
 return list;
 }



 Thanks and Regards,
 Rohini T Nagaraj,
 WebSphere CastIron QA Team,
  IBM INDIA PRIVATE LIMITED,
 DC1-3A-003,DLF IT PARK,Chennai - 600089
 Extn # : 21820 and Mobile #: 9962020675



 From:   Phil Steitz phil.ste...@gmail.com
 To: Commons Users List user@commons.apache.org
 Date:   04/28/2015 07:14 PM
 Subject:Re: [dbcp]Closed Connection or Exhausted Resultset error



 On 4/27/15 11:26 PM, Rohini T Nagaraj wrote:
 Hi,
 We are using the DBCP -org.apache.commons-dbcp-1.2.2.jar for connection 
 pooling.
 I don't think so.  You are using RS.isClosed below, which is JDK
 1.6+.  So assume you are using DBCP 1.4?  Pls verify  DBCP and pool
 version.
  Connection pool is created as shown in below code and had set the 
 connection pool setting  (removed evictable time settings). There is no 
 issue in getting a connection. This part of the code works fine.

   GenericObjectPool connectionPool = new GenericObjectPool();
   connectionPool.setMaxActive(25); 
 connectionPool.setMaxIdle(25); 
 connectionPool.setTestOnReturn(false);
 connectionPool.setTestOnBorrow(true);
 connectionPool.setTestWhileIdle(false);
 GenericKeyedObjectPoolFactory statementPoolFactory = new 
 GenericKeyedObjectPoolFactory(null

 

How can I restart a Commons Daemon Service Runner via API?

2015-04-28 Thread Volker Berlin
Hi,

How can I restart a Commons Daemon Service Runner from Java inside? Is
there a simple API? or can I request the service name to restart it with
an external process?

Volker