Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Не создается подключение к MySQL из серлета c JNDI


Автор: ks79 12.1.2010, 18:07
Добрый день, помогите пожалуйста разобраться с ошибкой
Кусок кода в котором возникает ошибка((

Код

Context ctx = (Context) new InitialContext().lookup("java:comp/env"); 
DataSource dataSource = (DataSource) ctx.lookup("jdbc/StudentsDS");
Connection con = dataSource.getConnection();
Statement stmt = con.createStatement(); // Ошибка возникает здесь



context.xml

Код

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/studentsApp">
   <Resource
      name="jdbc/StudentsDS"
      type="javax.sql.DataSource"
      username="root"
      password="1234"
      driverClassName="com.mysql.jdbc.Driver"
      maxIdle="2"
      maxWait="5000"
      validationQuery="SELECT 1"
      url="jdbc:mysql://127.0.0.1:3306/students"
      maxActive="4">
   </Resource>
</Context>


Текст ошибки

Код

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: NO))
    students.web.MainFrameServlet.doGet(MainFrameServlet.java:42)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: NO))
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    students.logic.ManagementSystem.getInstance(ManagementSystem.java:36)
    students.web.MainFrameServlet.doGet(MainFrameServlet.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:798)
    com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3700)
    com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1203)
    com.mysql.jdbc.Connection.createNewIO(Connection.java:2572)
    com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
    org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1247)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    students.logic.ManagementSystem.getInstance(ManagementSystem.java:36)
    students.web.MainFrameServlet.doGet(MainFrameServlet.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.



Без использования JNDI я к MySql перкрасно подключаюсь вот таким образом(
Код

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/students";
con = DriverManager.getConnection(url, "root", "1234");
stmt = con.createStatement();


Автор: dobrolub 12.1.2010, 20:38
попробуй два варианта

1. в строке адреса сервера указать localhost вместо 127.0.0.1
2. перенести username/password в строку url
url="jdbc:mysql://localhost:3306/students?user=root&password=1234"

Автор: magicfly 13.1.2010, 14:07
Цитата

using password: NO


Вполне возможно ошибка именно здесь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)