|
I have applications with Tomcat and i implement ConnectionPoolListener
in java beans.
package pe.com.enterprise.util;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import com.ibm.as400.access.*;
public final class ConnectionPoolImpl implements ConnectionPoolListener {
private AS400JDBCConnectionPool pool = null;
public ConnectionPoolImpl( String driverName, String systemIP,
String userName, String password, int initialConnections,
int maxConnections )
throws SQLException {
try {
//load DB Driver
Class.forName( driverName );
AS400JDBCConnectionPoolDataSource datasource = new
AS400JDBCConnectionPoolDataSource( systemIP, userName, password );
datasource.setErrors( "full" );
datasource.setExtendedDynamic( true );
datasource.setCursorHold(false);
//datasource.setTrueAutoCommit(true);
datasource.setTransactionIsolation("none");
datasource.setPackage("APP");
datasource.setPackageCache(true);
datasource.setPackageCriteria("select");
// Create an AS400JDBCConnectionPool object.
this.pool = new AS400JDBCConnectionPool( datasource );
this.pool.addConnectionPoolListener( this );
this.pool.setMaxConnections( maxConnections );
if( initialConnections > 0 )
this.pool.fill( initialConnections );
} catch( ClassNotFoundException cnfe ) {
throw new SQLException( "DataBase Driver (" + driverName +
") not found on classpath." );
} catch( ConnectionPoolException cpe ) {
throw new SQLException( cpe.getMessage() );
}
}
public void close() {
this.pool.close();
this.pool = null;
}
public synchronized Connection getConnection()throws SQLException {
try {
if (pool.getActiveConnectionCount() <
pool.getMaxConnections() ){
return pool.getConnection();
} else{
System.out.println("Se paso el nro de conexiones");
while( pool.getActiveConnectionCount() >=
pool.getMaxConnections() ) {
/*try {
Thread.sleep(20);
} catch( InterruptedException ie ){}*/
}
return pool.getConnection();
}
} catch( ConnectionPoolException cpe ) {
throw new SQLException( cpe.getMessage() );
}
}
//connection pool listener methods...
public void connectionCreated(ConnectionPoolEvent event) {
}
public void connectionExpired(ConnectionPoolEvent event) {
}
public void connectionPoolClosed(ConnectionPoolEvent event) {
}
public void connectionReleased(ConnectionPoolEvent event) {
}
public void connectionReturned(ConnectionPoolEvent event) {
}
public void maintenanceThreadRun(ConnectionPoolEvent event) {
}
}
I have a problem when use getConnection() and
pool.getActiveConnectionCount() < pool.getMaxConnections().
I wait for free Connection but this never succeded. Then Tomcat return
java.lang.OutMemoryError.
I close all Connection, PreparedStatement and ResultSet.
What's the problem??? Have some idea????
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.