final class OracleConnectionPoolingFactory {
private static Connection pool = null;
private OracleConnectionPoolingFactory() {
}
static synchronized Connection getInstance(String connString, String userConnName, String userConnPassword) throws SQLException, ClassNotFoundException {
if (pool == null || pool.isClosed()) {
Class.forName("oracle.jdbc.driver.OracleDriver");
OracleOCIConnectionPool ocpds = new OracleOCIConnectionPool();
ocpds.setURL(connString);
ocpds.setUser(userConnName);
ocpds.setPassword(userConnPassword);
java.util.Properties p = new java.util.Properties();
p.put(OracleOCIConnectionPool.CONNPOOL_MIN_LIMIT,"1");
p.put(OracleOCIConnectionPool.CONNPOOL_MAX_LIMIT,"20");
p.put(OracleOCIConnectionPool.CONNPOOL_INCREMENT, "1");
p.put(OracleOCIConnectionPool.CONNPOOL_TIMEOUT, "5");
ocpds.setPoolConfig(p);
System.out.println("Stringa di connessione: " + connString + " User: " + userConnName + " Password:" + userConnPassword);
OracleConnectionPoolingFactory.pool = ocpds.getConnection();
}
return pool;
}
public List<UserBean> findUserByLogin(UserBean user) throws DAOException {
Connection conn = null;
Statement stm = null;
ResultSet rs = null;
List<UserBean> out = new LinkedList<UserBean>();
try {
conn = OracleConnectionPoolingFactory.getInstance(connString,
userName, userPassword);
stm = conn.createStatement();
String query = SELECT + " WHERE upper(login) = '" +
user.getLogin().toUpperCase() + "' ";
rs = stm.executeQuery(query);
while(rs.next()){
UserBean tmp = new UserBean();
tmp.setIdUtente(rs.getInt("idUtente"));
tmp.setLogin(rs.getString("login"));
tmp.setPassword(rs.getString("pwd"));
tmp.setName(rs.getString("anagrafica"));
tmp.setRole(rs.getString("ruolo"));
out.add(tmp);
}
} catch (SQLException e) {
throw new DAOException(e);
} catch (ClassNotFoundException e) {
throw new DAOException(e);
} catch (Exception e) {
throw new DAOException(e);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e){
}
}
if (stm != null){
try {
stm.close();
} catch(SQLException e){
}
}
if (conn != null){
try {
conn.close();
} catch(SQLException e){
}
}
}
return out;
}
static synchronized Connection getInstance(String connString, String userConnName, String userConnPassword) throws SQLException, ClassNotFoundException {
if (pool == null || pool.isClosed()) {
Class.forName("oracle.jdbc.driver.OracleDriver");
OracleOCIConnectionPool ocpds = new OracleOCIConnectionPool();
ocpds.setURL(connString);
ocpds.setUser(userConnName);
ocpds.setPassword(userConnPassword);
java.util.Properties p = new java.util.Properties();
p.put(OracleOCIConnectionPool.CONNPOOL_MIN_LIMIT,"1");
p.put(OracleOCIConnectionPool.CONNPOOL_MAX_LIMIT,"20");
p.put(OracleOCIConnectionPool.CONNPOOL_INCREMENT, "1");
p.put(OracleOCIConnectionPool.CONNPOOL_TIMEOUT, "5");
ocpds.setPoolConfig(p);
System.out.println("Stringa di connessione: " + connString + " User: " + userConnName + " Password:" + userConnPassword);
OracleConnectionPoolingFactory.pool = ocpds.getConnection();
}
return pool;
}
That would be the problem then ;-) They should be closed in a finally block when finished with