Erstellen kann PoolableConnectionFactory (Access denied for user "@'localhost'

Ich versuche zum einrichten einer DatabaseConnectionPool für eine web-app für die letzten paar Tage, ohne Erfolg. Ich habe die relevanten Abschnitte der Tomcat-docs und ein großes Angebot rund um das Thema und denke ich mache alles richtig, aber offensichtlich nicht, denn ich erhalte immer die folgende Fehlermeldung:

Cannot create PoolableConnectionFactory (Access denied for user ''@'localhost' (using password: YES))

Ich bin nicht immer der Fehler wenn ich starten Sie Tomcat ausführen, aber wenn ich versuche, führen Sie die folgenden servlet:

package twittersearch.web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import twittersearch.model.*;
public class ConPoolTest extends HttpServlet {

    public void doGet(HttpServletRequest request,
                  HttpServletResponse response) 
                  throws IOException, ServletException {
        Context ctx = null;
        DataSource ds = null;
        Connection conn = null;
        try {
            ctx = new InitialContext();
            ds = (DataSource)ctx.lookup("java:comp/env/jdbc/twittersearchdb");
            conn = ds.getConnection();
            if(conn != null) {
                System.out.println("have a connection from the pool");
            }
        } catch(SQLException e) {
            e.printStackTrace();
        } catch(NamingException e) {
            e.printStackTrace();
        } finally {
            try {
                if(conn!=null) {
                    conn.close();
                }
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Rahmen für die webapp ist:

<?xml version='1.0' encoding='utf-8'?>
<Context>

    <!-- Configure a JDBC DataSource for the user database -->
 <Resource name="jdbc/twittersearchdb" 
           type="javax.sql.DataSource" 
     auth="Container" 
     user="root" 
     password="mypwd" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/twitter" 
     maxActive="8" 
     maxIdle="4"/>


</Context>

Was ich wirklich nicht verstehe, ist, warum der Fehler ist nicht zu sagen, dass der Zugriff verweigert 'root'@'localhost' wenn ich angegeben habe, dass das der user.

Was ich versucht habe:

Habe ich eine doppelte context.xml? Nein. Ich löschte den Standard in Tomcat 6.0/conf. Ich versucht, indem Sie eine context.xml in [mywebappname]/META-INF/context.xml aber nicht nur, dass dies nicht Arbeit, sondern resultierte in der Erstellung einer Datei mit dem Namen TwitterSearch.xml die wurde automatisch generierten und in die Tomcat 6.0/conf/Catalina/localhost Verzeichnis. So jetzt bin ich gerade editieren, dass man-und das ist die einzige, die ich habe.

Ist es die Tomcat-version? Gut, ich habe komplett neu installiert, die neueste version von Tomcat 6.0 also ich denke es ist nicht so, dass.

Sind wir fehlen einige Gläser? Ich habe die tomcat-dbcp.jar, jconnector.jar und all die anderen, dass ich denke, ich bin gemeint zu haben, in der Tomcat-6.0/lib-Verzeichnis.

Wenn ich mir die Passwörter in der MySQL-Datenbank, die Sie zu haben scheinen codiert wurde aus Sicherheitsgründen in eine lange alpha-numerische Zeichenfolge. Ist das normal? Sollte ich dies in meiner context.xml oder nur das normale Passwort?

Ich weiß wirklich nicht, wie ich Sortieren kann und würde wirklich zu schätzen einige Experten.

Vielen Dank im Voraus.

Joe

InformationsquelleAutor Joe | 2010-09-23
Schreibe einen Kommentar