< prev index next >

src/java.sql/share/classes/java/sql/DriverManager.java

Print this page


   1 /*
   2  * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 635                     }
 636                 }
 637             }
 638 
 639             driversInitialized = true;
 640             println("JDBC DriverManager initialized");
 641         }
 642     }
 643 
 644 
 645     //  Worker method called by the public getConnection() methods.
 646     private static Connection getConnection(
 647         String url, java.util.Properties info, Class<?> caller) throws SQLException {
 648         /*
 649          * When callerCl is null, we should check the application's
 650          * (which is invoking this class indirectly)
 651          * classloader, so that the JDBC driver class outside rt.jar
 652          * can be loaded from here.
 653          */
 654         ClassLoader callerCL = caller != null ? caller.getClassLoader() : null;
 655         if (callerCL == null) {
 656             callerCL = Thread.currentThread().getContextClassLoader();
 657         }
 658 
 659         if (url == null) {
 660             throw new SQLException("The url cannot be null", "08001");
 661         }
 662 
 663         println("DriverManager.getConnection(\"" + url + "\")");
 664 
 665         ensureDriversInitialized();
 666 
 667         // Walk through the loaded registeredDrivers attempting to make a connection.
 668         // Remember the first exception that gets raised so we can reraise it.
 669         SQLException reason = null;
 670 
 671         for (DriverInfo aDriver : registeredDrivers) {
 672             // If the caller does not have permission to load the driver then
 673             // skip it.
 674             if (isDriverAllowed(aDriver.driver, callerCL)) {
 675                 try {


   1 /*
   2  * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 635                     }
 636                 }
 637             }
 638 
 639             driversInitialized = true;
 640             println("JDBC DriverManager initialized");
 641         }
 642     }
 643 
 644 
 645     //  Worker method called by the public getConnection() methods.
 646     private static Connection getConnection(
 647         String url, java.util.Properties info, Class<?> caller) throws SQLException {
 648         /*
 649          * When callerCl is null, we should check the application's
 650          * (which is invoking this class indirectly)
 651          * classloader, so that the JDBC driver class outside rt.jar
 652          * can be loaded from here.
 653          */
 654         ClassLoader callerCL = caller != null ? caller.getClassLoader() : null;
 655         if (callerCL == null || callerCL == ClassLoader.getPlatformClassLoader()) {
 656             callerCL = Thread.currentThread().getContextClassLoader();
 657         }
 658 
 659         if (url == null) {
 660             throw new SQLException("The url cannot be null", "08001");
 661         }
 662 
 663         println("DriverManager.getConnection(\"" + url + "\")");
 664 
 665         ensureDriversInitialized();
 666 
 667         // Walk through the loaded registeredDrivers attempting to make a connection.
 668         // Remember the first exception that gets raised so we can reraise it.
 669         SQLException reason = null;
 670 
 671         for (DriverInfo aDriver : registeredDrivers) {
 672             // If the caller does not have permission to load the driver then
 673             // skip it.
 674             if (isDriverAllowed(aDriver.driver, callerCL)) {
 675                 try {


< prev index next >