please help: PostgreSQL JDBC Pooling problem - Mailing list pgsql-jdbc
From | Marcus Andree S. Magalhaes |
---|---|
Subject | please help: PostgreSQL JDBC Pooling problem |
Date | |
Msg-id | 1048546570.3e7f8d0ac0342@webmail.vlinfo.com.br Whole thread Raw |
Responses |
Re: please help: PostgreSQL JDBC Pooling problem
|
List | pgsql-jdbc |
Dear list, I'm having a couple problems while implementing a JDBC Connection pool using Postgresql Jdbc3PoolingDataSource. I was able to reproduce the errors with a simple java program. I'll be grateful if someone could analyse this problem for a while... The class io_property is a local class using standard java Properties classes to load data from a simple text file. This is done when calling the io_property.startService() static method. If I run the program exactly as show below, it works wonderfully. However, when commenting the return line of openConnection and uncommenting the previous 3 lines as: this.loConnection = loPoolSource.getConnection(); System.out.println("loConnection = " + this.loConnection); loStatement = this.loConnection.createStatement(); System.out.println("Statement = " + loStatement); return loStatement; // return this.loConnection.createStatement(); The JDBC Statement returned is null. That's the problem I'm facing with my main application... Why is this happening?? In which circumstances does Connection.createStatement() return null??? My main application is a bit different... It uses threads and lots of SQL code. I have to return a Statement instead of a Connection for historical reasons... Any help is welcome. The source file follows... Marcus =============================================================================== public class con_database { static Jdbc3PoolingDataSource loPoolSource = null; private Connection loConnection = null; con_database() { io_property.startService(); } private static void setPool() { // DataSource initialization System.out.println("setPool()"); try { System.out.println("setting pool"); // constructs a pool only when loPoolSource is not assigned. // this will prevent problems if the same pool is set more than // one time if (loPoolSource == null) { loPoolSource = new Jdbc3PoolingDataSource(); // DataSource configuration. loPoolSource.setDataSourceName(io_property.DATABASE_POOL_DATA_SOURCE_NAME); // any name is valid here loPoolSource.setServerName(io_property.DATABASE_POOL_SERVER_NAME); loPoolSource.setPortNumber(io_property.DATABASE_POOL_SERVER_PORT); loPoolSource.setDatabaseName(io_property.DATABASE_POOL_DATABASE_NAME); loPoolSource.setUser(io_property.DATABASE_POOL_USER_NAME); loPoolSource.setPassword(io_property.DATABASE_POOL_PASSWORD); loPoolSource.setMaxConnections(io_property.DATABASE_POOL_MAXCONNECTIONS); } else { System.out.println("pool is set"); return; } } catch (Exception loException) { // logger.logToFile(loException); loException.printStackTrace(); } } public Statement openConnection() { Statement loStatement; System.out.println("opening con"); try { // gets a connection from Pool this.loConnection = loPoolSource.getConnection(); System.out.println("loConnection = " + this.loConnection); // loStatement = this.loConnection.createStatement(); // System.out.println("Statement = " + loStatement); // return loStatement; return this.loConnection.createStatement(); } catch (Exception loException) { loException.printStackTrace(); } return null; } public void closeConnection() { System.out.println("closing con"); try { if (this.loConnection != null) this.loConnection.close(); } catch (Exception loException) { loException.printStackTrace(); } } public static void main(String args[]) { Statement loStatement = null; con_database loPoolConnection = new con_database(); loPoolConnection.setPool(); loStatement = loPoolConnection.openConnection(); ResultSet lors = null; try { lors = loStatement.executeQuery("select * from <tablename>"); while (lors.next()) { System.out.println(lors.getString(1)); } } catch (Exception e) { e.printStackTrace(); } finally { try { lors.close(); loStatement.close(); loPoolConnection.closeConnection(); } catch (Exception loException) { loException.printStackTrace(); } } loPoolConnection = new con_database(); loPoolConnection.setPool(); loStatement = null; loStatement = loPoolConnection.openConnection(); lors = null; try { lors = loStatement.executeQuery("select * from <table_name>"); while (lors.next()) { System.out.println(lors.getString(2)); } } catch (Exception e) { e.printStackTrace(); } finally { try { lors.close(); loStatement.close(); loPoolConnection.closeConnection(); } catch (Exception loException) { loException.printStackTrace(); } } } } ------------------------------- http://www.vlinfo.com.br
pgsql-jdbc by date: