in src/main/java/org/apache/commons/dbcp2/BasicDataSource.java [73:100]
static {
// Attempt to prevent deadlocks - see DBCP - 272
DriverManager.getDrivers();
try {
// Load classes now to prevent AccessControlExceptions later
// A number of classes are loaded when getConnection() is called
// but the following classes are not loaded and therefore require
// explicit loading.
if (Utils.isSecurityEnabled()) {
final ClassLoader loader = BasicDataSource.class.getClassLoader();
final String dbcpPackageName = BasicDataSource.class.getPackage().getName();
loader.loadClass(dbcpPackageName + ".DelegatingCallableStatement");
loader.loadClass(dbcpPackageName + ".DelegatingDatabaseMetaData");
loader.loadClass(dbcpPackageName + ".DelegatingPreparedStatement");
loader.loadClass(dbcpPackageName + ".DelegatingResultSet");
loader.loadClass(dbcpPackageName + ".PoolableCallableStatement");
loader.loadClass(dbcpPackageName + ".PoolablePreparedStatement");
loader.loadClass(dbcpPackageName + ".PoolingConnection$StatementType");
loader.loadClass(dbcpPackageName + ".PStmtKey");
final String poolPackageName = PooledObject.class.getPackage().getName();
loader.loadClass(poolPackageName + ".impl.LinkedBlockingDeque$Node");
loader.loadClass(poolPackageName + ".impl.GenericKeyedObjectPool$ObjectDeque");
}
} catch (final ClassNotFoundException cnfe) {
throw new IllegalStateException("Unable to pre-load classes", cnfe);
}
}