hantsy 发表于 2003-10-30 14:04:28

jdbc连接mysql出错,java高手请进!

我的开发环境是:
Redhat 9
tomcat 4.1.24
Mysql 4.0.16+Connector /J 3.1
用到dbcp连接数据,
配置如下:
===================================
server.xml部分
===================================
<Context path="/demo" docBase="demo"
      debug="5" reloadable="true" crossContext="true">
                                                                                                                           
<Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_demo_log." suffix=".txt"
             timestamp="true"/>
                                                                                                                           
<Resource name="jdbcdemo"
               auth="Container"
               type="javax.sql.DataSource"/>
                                                                                                                           
<ResourceParams name="jdbcdemo">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>50000</value>
    </parameter>
   <parameter>
   <name>username</name>
   <value>root</value>
    </parameter>
    <parameter>
   <name>password</name>
   <value>hantsy</value>
    </parameter>
   <parameter>
<parameter>
       <name>driverClassName</name>
       <value>org.gjt.mm.mysql.Driver</value>
    </parameter>
<parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/demo</value>
    </parameter>
</ResourceParams>
</Context>
===============================================
编写了一类来连接数据库:


===============================================
ConectionPool.java
===============================================
/*
* 创建日期 2003-10-29
* Copyright2003 hantsy<[email protected]>
*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.


*/
package com.demo;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionPool {
   
        private static String JNDI_NAME = "java:comp/env/jdbcdemo";
   
        private DataSource ds;
        private static ConnectionPool mySelf;
   
        private ConnectionPool(DataSource ds) {
                this.ds = ds;
        }
   
        public static ConnectionPool getInstance() {
      
                try {
            
                        if(mySelf == null) {
               
                                Context initCtx = new InitialContext();
                                DataSource ds = (DataSource)initCtx.lookup(JNDI_NAME);
               
                                mySelf = new ConnectionPool(ds);               
               
                        }
                        return mySelf;
            
                } catch(NamingException ex) {
                        ex.printStackTrace();
                        throw new RuntimeException("connect to database failed!");
                }
      
        }
   
        public Connection getConnection(boolean autoCommit) throws SQLException {
      
                Connection con = ds.getConnection();
                con.setAutoCommit(autoCommit);
                return con;
        }
   
}
===============================================

做了一个jsp文件来测试,连接测试文件
==============================================
test.jsp
============================================
<!--
* 创建日期 2003-10-29
* Copyright2003 hantsy<[email protected]>
*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

-->
<%@ page language="java" pageEncoding="UTF-8" import="com.demo.ConnectionPool,java.sql.Connection,java.sql.ResultSet,java.sql.Statement"%>

<html>
<head>
<title>Connection Test</title>
</head>
<body bgcolor="#FFFFFF">
&lt;%
ConnectionPool pool=ConnectionPool.getInstance();
Connection cnn=pool.getConnection(true);
//cnn.setAutoCommit(true);
Statement stmt=cnn.createStatement();
ResultSet rs=stmt.executeQuery("select * from user");
while(rs.next()){
out.println(rs.getString(1));
out.println(rs.getString(2));
out.println(rs.getString(3));


}


%&gt;
</body>
&lt;/html&gt;
=============================================
启动数据库后,出错,从来没有见过的。
============================

type Exception report

message Internal Server Error

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

exception

org.apache.jasper.JasperException: java.sql.SQLException: Server configuration denies access to data source
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
        at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
        at java.lang.Thread.run(Thread.java:534)

root cause

org.apache.commons.dbcp.DbcpException: java.sql.SQLException: Server configuration denies access to data source
        at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:85)
        at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:184)
        at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(Unknown Source)
        at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:117)
        at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:110)
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:312)
        at com.demo.ConnectionPool.getConnection(ConnectionPool.java:56)
        at org.apache.jsp.test_jsp._jspService(test_jsp.java:56)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
        at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
        at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: Server configuration denies access to data source
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:392)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1532)
        at com.mysql.jdbc.Connection.(Connection.java:486)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:326)
        at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:83)
        ... 41 more
================================================
还有就是这些代码是以前在win下用的,没有任何问题。。。
只是现在是linux,数据的版不同罢了。。。。。

hantsy 发表于 2003-10-30 16:59:56

此问题已经解决不必麻烦各位了,
方法如下:
在用grant授权后
要使用flush privileges
使之生效。

希望大家一同讨论java!
页: [1]
查看完整版本: jdbc连接mysql出错,java高手请进!