我的项目名字是shopping2.8 在服务器上的名字也好似shopping2.8 数据库名字是shopping 数据库是mysql 账号root 密码 root  CATALINA_HOME已经正确配置了server.xml的代码:
<Context path="/shopping2.8" docBase="${catalina.home}/webapps/shopping2.8" debug="0" reloadable ="true" crossContext="true">
       
        <Resource name = "jdbc/shopping" auth="Container" type="javax.sql.DataSource"/>
      
<ResourceParams name = "jdbc/shopping">
 
     <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>10000</value>
     </parameter>
 
     <parameter>
        <name>username</name>
        <value>root</value>
     </parameter>
 
     <parameter>
        <name>password</name>
        <value>root</value>
     </parameter>
 
     <parameter>
        <name>driverClassName</name>
        <value>com.mysql.jdbc.Driver</value>
     </parameter>
 
     <parameter>
        <name>url</name>
  <value>jdbc:mysql//localhost:3306/shopping?autoReconnect=true</value>
     </parameter>
 
</ResourceParams> </Context>web.xml的代码:
  <resource-ref>
   <res-ref-name>shopping</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
  </resource-ref>java类的代码:
/*
 * 连接数据库的类。
 */package com.lovo.util;import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;public class Jdbc {

private Logger log = Logger.getLogger(Jdbc.class);
private static Jdbc jdbc = null;
private Connection conn = null; public static Jdbc getJdbc() {
if(null == jdbc){
jdbc = new Jdbc();
}
return jdbc;
} public Connection getConn() {
try {
Context initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/shopping");
conn = ds.getConnection();
} catch (SQLException e) {
log.error("连接数据库出错!!!");
} catch (NamingException e) {
log.error("NamingException");
}
return conn;
}

public void closeConn() {
try {
conn.close();
} catch (SQLException e) {
log.error("连接数据库出错!");
}
}

public static void main(String[] args) {
Jdbc.getJdbc().getConn();
}

}
连接mysql的mysql-connector-java-5.1.0-bin.jar包已经放到tomcat里面的正确位置了
我用了日志管理错误。
连接的时候会出错输出这句话:ERROR http-8080-Processor25 com.lovo.util.Jdbc - 连接数据库出错!!!

解决方案 »

  1.   

      <resource-ref>
          <res-ref-name>shopping</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
    res-ref-name : 写成 jdbc/shopping 试试
      

  2.   

    或者 写成
    <ResourceLink name="jdbc/shopping " global="jdbc/shopping " type="javax.sql.DataSource"/> 
      

  3.   

    <parameter>
                                <name>url</name>
                                         <value>jdbc:mysql//localhost:3306/shopping?autoReconnect=true</value>
                             </parameter>
    我们已经找到错了,看上面mysql后面少了个冒号。