@@ -35,7 +35,7 @@ public class UnpooledDataSource implements DataSource {
35
35
36
36
private ClassLoader driverClassLoader ;
37
37
private Properties driverProperties ;
38
- private static Map <String , Driver > driverCache = new ConcurrentHashMap <String , Driver >();
38
+ private static Map <String , Driver > registeredDrivers = new ConcurrentHashMap <String , Driver >();
39
39
40
40
private String driver ;
41
41
private String url ;
@@ -49,7 +49,7 @@ public class UnpooledDataSource implements DataSource {
49
49
Enumeration <Driver > drivers = DriverManager .getDrivers ();
50
50
while (drivers .hasMoreElements ()) {
51
51
Driver driver = drivers .nextElement ();
52
- driverCache .put (driver .getClass ().getName (), driver );
52
+ registeredDrivers .put (driver .getClass ().getName (), driver );
53
53
}
54
54
}
55
55
@@ -191,18 +191,19 @@ private Connection doGetConnection(Properties properties) throws SQLException {
191
191
}
192
192
193
193
private synchronized void initializeDriver () throws SQLException {
194
- if (!driverCache .containsKey (driver )) {
194
+ if (!registeredDrivers .containsKey (driver )) {
195
195
Class <?> driverType ;
196
196
try {
197
197
if (driverClassLoader != null ) {
198
198
driverType = Class .forName (driver , true , driverClassLoader );
199
199
} else {
200
200
driverType = Resources .classForName (driver );
201
201
}
202
+ // DriverManager requires the driver to be loaded via the system ClassLoader.
202
203
// http://www.kfu.com/~nsayer/Java/dyn-jdbc.html
203
204
Driver driverInstance = (Driver )driverType .newInstance ();
204
205
DriverManager .registerDriver (new DriverProxy (driverInstance ));
205
- driverCache .put (driver , driverInstance );
206
+ registeredDrivers .put (driver , driverInstance );
206
207
} catch (Exception e ) {
207
208
throw new SQLException ("Error setting driver on UnpooledDataSource. Cause: " + e );
208
209
}
0 commit comments