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

Reply via email to