For completeness, they could be added and I guess I can do it as part of this particular change.
I would probably move the call to DriverManager.getCallerClassLoader() to avoid the duplication of the if block. Best Lance On Aug 10, 2012, at 5:02 PM, David Schlosnagle wrote: > Lance, > > There are a couple of other uses of > DriverManager.getCallerClassLoader() that do no fall back to > Thread.currentThread().getContextClassLoader() if the caller class > loader is null (bootstrap loader). Should these be updated as well? > >> From >> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/sql/DriverManager.java: > Line 334 in deregisterDriver(Driver driver) > Line 365 in getDrivers() > > Thanks, > Dave > > > On Fri, Aug 10, 2012 at 1:19 PM, Lance Andersen - Oracle > <lance.ander...@oracle.com> wrote: >> Looking for a reviewer for the following change: >> >> - add a call to Thread.currentThread().getContextClassLoader() to >> DriverManager.getDriver() >> - Remove the synchronized block for the same call in getConnection() >> >> Thank you. >> >> Best >> Lance >> >> localhost:sql lanceandersen$ hg diff DriverManager.java >> diff -r 629f357fc17b src/share/classes/java/sql/DriverManager.java >> --- a/src/share/classes/java/sql/DriverManager.java Fri Aug 10 09:17:14 >> 2012 -0400 >> +++ b/src/share/classes/java/sql/DriverManager.java Fri Aug 10 13:05:00 >> 2012 -0400 >> @@ -264,6 +264,10 @@ >> // be null. >> ClassLoader callerCL = DriverManager.getCallerClassLoader(); >> >> + if(callerCL == null) { >> + callerCL = Thread.currentThread().getContextClassLoader(); >> + } >> + >> // Walk through the loaded registeredDrivers attempting to locate >> someone >> // who understands the given URL. >> for (DriverInfo aDriver : registeredDrivers) { >> @@ -563,11 +567,8 @@ >> * classloader, so that the JDBC driver class outside rt.jar >> * can be loaded from here. >> */ >> - synchronized(DriverManager.class) { >> - // synchronize loading of the correct classloader. >> - if(callerCL == null) { >> - callerCL = Thread.currentThread().getContextClassLoader(); >> - } >> + if(callerCL == null) { >> + callerCL = Thread.currentThread().getContextClassLoader(); >> } >> >> if(url == null) { >> localhost:sql lanceandersen$ >> >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 >> Oracle Java Engineering >> 1 Network Drive >> Burlington, MA 01803 >> lance.ander...@oracle.com >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 lance.ander...@oracle.com