【发布时间】:2011-04-16 11:33:33
【问题描述】:
过去几天我一直在尝试为 Web 应用程序设置 DatabaseConnectionPool,但没有成功。我已经阅读了 Tomcat 文档的相关部分以及有关该主题的大量内容,并认为我做的一切都是正确的,但显然不是因为我不断收到以下错误:
Cannot create PoolableConnectionFactory (Access denied for user ''@'localhost' (using password: YES))
我在启动 Tomcat 运行时没有收到错误,但是当我尝试运行以下 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();
}
}
}
}
webapp 的上下文是:
<?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,所以我认为不是那样。
我们是否缺少一些罐子?我有 tomcat-dbcp.jar、jconnector.jar 以及我认为应该在 Tomcat 6.0/lib 目录中拥有的所有其他文件。
当我查看 MySQL 数据库中的密码时,它们似乎已出于安全目的被编码为一个长字母数字字符串。这是正常的吗?我应该在我的 context.xml 中使用它还是只使用普通密码?
我真的不知道如何解决这个问题,非常感谢一些专家的建议。
非常感谢。
乔
【问题讨论】:
标签: mysql datasource tomcat6 mysql-error-1045