Hello ,

I met mysql jdbc load issue in Tomcat servlet , I also pasted the content in 
this stackoverflow 
<https://stackoverflow.com/questions/45725610/tomcat-jdbc-drivermanager-initial-load-issue>
 .



        I finally found this code snippet in the tomcat70 
code<https://github.com/apache/tomcat70/blob/c1a62522e9a6cd6625f026e4197b490ef1beaa78/java/org/apache/catalina/core/JreMemoryLeakPreventionListener.java>
 and did the debug in eclipse. The classloader to load DriverManager is always 
the AppClassLoader which contains only the bootstrap.jar and tomcat-juli.jar on 
the CLASSPATH only (under ${catalina.home}/bin .
So my servlet has to manually call Class.forName("com.mysql.jdbc.Driver") , 
otherwise the call to DriverManager.getConnection("jdbc:mysql://xxx") will 
throw "no suitable driver found" exception.
My questions:
1.      is my understanding true ?
2.      The manual or the stackoverflow said put the mysql-connector.jar under 
${catalina.home}/lib which will be initialized once and should work for the 
DriverManager case. Is it not correct now ?
            try
        {
            // Use the system classloader as the victim for all this
            // ClassLoader pinning we're about to do.
            Thread.currentThread().setContextClassLoader(
                    ClassLoader.getSystemClassLoader());

            /*
             * First call to this loads all drivers in the current class
             * loader
             */
            if (driverManagerProtection) {
                DriverManager.getDrivers();
            }
My enviroment:

C:\Users\xxxx\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\apache-tomcat-7.0.78\bin>version.bat
Using CATALINA_BASE:   
"C:\Users\aisun\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\apache-tomcat-7.0.78"
Using CATALINA_HOME:   
"C:\Users\aisun\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\apache-tomcat-7.0.78"
Using CATALINA_TMPDIR: 
"C:\Users\aisun\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\apache-tomcat-7.0.78\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.8.0_131"
Using CLASSPATH:       
"C:\Users\aisun\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\apache-tomcat-7.0.78\bin\bootstrap.jar;C:\Users\aisun\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\ap
Server version: Apache Tomcat/7.0.78
Server built:   May 10 2017 15:02:19 UTC
Server number:  7.0.78.0
OS Name:        Windows 7
OS Version:     6.1
Architecture:   amd64
JVM Version:    1.8.0_131-b11
JVM Vendor:     Oracle Corporation
C:\Users\aisun\Desktop\Tools\apache-tomcat-7.0.78-windows-x64\apache-tomcat-7.0.78\bin>


Thanks very much.
Keith



Reply via email to