Невозможно создать PoolableConnectionFactory (доступ запрещен для пользователя '' @ 'localhost'

Последние пару дней я безуспешно пытался настроить DatabaseConnectionPool для веб-приложения. Я прочитал соответствующие разделы документации Tomcat и многое по этой теме и думаю, что все делаю правильно, но, очевидно, не потому, что продолжаю получать следующую ошибку:

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

Я не получаю сообщение об ошибке, когда я запускать Tomcat, но когда я пытаюсь запустить следующий сервлет:

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();
            }
        }
    }
}

Контекст для веб-приложения:

<?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>

Я действительно не понимаю, почему ошибка не говорит, что доступ запрещен к 'root '@' localhost ', когда я указал, что это пользователь.

Что я пробовал:

Есть ли у меня дублирующийся context.xml? Нет. Я удалил значение по умолчанию в Tomcat 6.0 / conf. Я попытался поместить context.xml в [mywebappname] / META-INF / context. xml, но это не только не сработало, но и привело к созданию файла с именем TwitterSearch.xml, который был автоматически сгенерирован и помещен в каталог Tomcat 6.0 / conf / Catalina / localhost. Итак, сейчас я просто редактирую тот, и это единственный, который у меня есть.

Это версия Tomcat? Что ж, я полностью переустановил последнюю версию Tomcat 6.0, так что не думаю, что это так.

Не хватает каких-то jar-файлов? У меня есть tomcat-dbcp.jar, jconnector.jar и все другие, которые, как мне кажется, должны находиться в каталоге Tomcat 6.0 / lib.

Когда я смотрю на пароли в базе данных MySQL, они, кажется, были закодированы в целях безопасности в длинную буквенно-цифровую строку. Это нормально? Должен ли я иметь его в моем context.xml или просто использовать обычный пароль?

Я правда не знаю ' (2) перебрать все методы этого класса (а) распечатать имя и тип каждого параметра ...

Как бы вы выполнили эту задачу отражения в Groovy:

(1) предоставьте тип класса для Groovy-функция
(2) перебрать все методы этого класса
(a) распечатайте имя и тип каждого параметра из метода
(b) распечатать возвращаемый тип

5
задан BuddyJoe 23 September 2010 в 20:31
поделиться