Review request 7190657 Modify getDriver() to call Thread.currentThread().getContextClassLoader();
Lance Andersen - Oracle
Lance.Andersen at oracle.com
Sat Aug 11 17:15:30 UTC 2012
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.Andersen at 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.Andersen at oracle.com
>>
Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering
1 Network Drive
Burlington, MA 01803
Lance.Andersen at oracle.com
More information about the core-libs-dev
mailing list