我的项目名字是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 - 连接数据库出错!!!
<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 - 连接数据库出错!!!
<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 试试
<ResourceLink name="jdbc/shopping " global="jdbc/shopping " type="javax.sql.DataSource"/>
<name>url</name>
<value>jdbc:mysql//localhost:3306/shopping?autoReconnect=true</value>
</parameter>
我们已经找到错了,看上面mysql后面少了个冒号。