2016-09-27 4 views
0

Ich bin mit Tomcat Version 8 und MySQL-Anschluss ver 6. Hier meine context.xml ist:java.sql.SQLException: Kann nicht erstellen PoolableConnectionFactory (CLIENT_PLUGIN_AUTH erforderlich)

<WatchedResource>WEB-INF/web.xml</WatchedResource> 
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 

<Resource auth="Container" 
      driverClassName="com.mysql.cj.jdbc.Driver" 
      maxActive="20" 
      maxIdle="10" 
      maxWait="-1" 
      name="jdbc/MyConn" 
      username="root" 
      password="mypassword" 
      type="javax.sql.DataSource" 
      url="jdbc:mysql://localhost:3306/training_db" 
      /> 

Dies ist die Klasse I für verwenden DB-Verbindung.

public class DBConnection { 

public static Connection getConnection() throws Exception{ 
    Context initContext = new InitialContext(); 
    Context envContext = (Context)initContext.lookup("java:/comp/env"); 
    DataSource ds = (DataSource)envContext.lookup("jdbc/MyConn"); 
    Connection conn = ds.getConnection(); 
    System.out.println("dbConLookp():: Data Source Connection is called."+ds.getLogWriter()); 
    return conn; 
} 

} 

Dies ist, was ich für die Verbindung zur Datenbank haben und tun Einfügungen.

try{ 


    DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); 

    Connection con = DBConnection.getConnection(); 
    PreparedStatement st = con.prepareStatement("INSERT INTO EMPLOYEE (ID,FIRSTNAME,LASTNAME,MIDDLENAME,PHONENUMBER,EMAILID,ADDRESS,USERPASS) VALUES (?,?,?,?,?,?,?)"); 
    st.setInt(1, Integer.parseInt(request.getParameter("id"))); 
    st.setString(2, firstName); 
    st.setString(3, lastName); 
    st.setString(4, middleName); 
    st.setString(5, phoneNumber); 
    st.setString(6, emailId); 
    st.setString(7, address); 
    st.setString(8, password); 

    boolean rs = st.execute(); 
    if (!rs) { 
     System.out.println("Record "+request.getParameter("id")+" is inserted successfully."); 
    } else { 
     System.out.println("Record is insertion is failed."); 
    } 
    st.close(); 
    con.close(); 
    } 
    catch(Exception e){ 
     System.out.println("Exception caught:" + e); 
    } 

Auf Register Seite, wenn ich registrieren, klicken, erhalte ich java.sql.SQLException: kann nicht erstellt werden PoolableConnectionFactory (CLIENT_PLUGIN_AUTH erforderlich) Ausnahme. Ich habe versucht, localhost zu 127.0.0.1 zu ändern, aber es hat nicht funktioniert. Ich habe auch die MySQL-Berechtigungen geprüft und sie sehen gut aus. Ich habe versucht, einen anderen Benutzer zu erstellen, aber es hat nicht so gut funktioniert. Ich habe versucht, eine andere context.xml in meinem WEB-INF-Ordner zu erstellen, aber kein Glück. Ich weiß nicht, was ich noch tun kann. Jede Hilfe wird geschätzt.

Antwort

0

Falls jemand das gleiche Problem hat, habe ich mich daran erinnert, dass ich MySQL Connector JARs in Tomcat's lib Ordner kopiert habe, wie es eine StackOverflow Antwort von einer verwandten Frage nahelegt. Löschen Sie diese JARs und Sie werden gut gehen.

Ich musste auch meine Connector-Version auf v5.1.39 downgraden. Versuchen Sie verschiedene Connector-Versionen, wenn Sie weiterhin Probleme haben.

Verwandte Themen