最近在配置tomcat6连接池出现问题了,将以下代码放入tomcat的conf的context.xml,并将jdbc驱动放入tomcat的lib
目录,然后运行我提供的jsp文件显示成功读取数据库的表数据。 <Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource> <%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%
DataSource ds = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env"); //从Context中lookup数据源
ds = (DataSource)envCtx.lookup("jdbc/mengshan"); if(ds!=null) {
out.println("已经获得DataSource!");
out.println("<br>");Connection conn = ds.getConnection();
Statement stmt=conn.createStatement();ResultSet rst=stmt.executeQuery("select * from usertable");
out.println("以下是从数据库中读取出来的数据");
while(rst.next()){
out.println("bookName:"+rst.getString(1));
out.println("<br>"); }}else out.println("连接失败!"); }
catch(Exception ne){out.println(ne);}
%>
现在我想用第二种方法配置数据源就是把这个xml内容放入一个具体的项目test目录
在test新建META-INF,创建context.xml
内容如下
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource>
</Context>
并在该项目web.xml加入
<resource-ref>
<res-ref-name>jdbc/mengshan</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>同样运行出现错误
已经获得DataSource!
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
如何解决此问题呢?
目录,然后运行我提供的jsp文件显示成功读取数据库的表数据。 <Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource> <%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%
DataSource ds = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env"); //从Context中lookup数据源
ds = (DataSource)envCtx.lookup("jdbc/mengshan"); if(ds!=null) {
out.println("已经获得DataSource!");
out.println("<br>");Connection conn = ds.getConnection();
Statement stmt=conn.createStatement();ResultSet rst=stmt.executeQuery("select * from usertable");
out.println("以下是从数据库中读取出来的数据");
while(rst.next()){
out.println("bookName:"+rst.getString(1));
out.println("<br>"); }}else out.println("连接失败!"); }
catch(Exception ne){out.println(ne);}
%>
现在我想用第二种方法配置数据源就是把这个xml内容放入一个具体的项目test目录
在test新建META-INF,创建context.xml
内容如下
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource>
</Context>
并在该项目web.xml加入
<resource-ref>
<res-ref-name>jdbc/mengshan</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>同样运行出现错误
已经获得DataSource!
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
如何解决此问题呢?
<Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource>
驱动我已经放在lib目录,不存在驱动问题,因为上面我也读取成功了。
url错了?但是你说上面一个是好的
看看是不是哪里的名字或路径写错了
在tomcat6->conf->context.xml文件,在<context></context>之间添加:
<Context>
<Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource>
</Context> 2.web.xml中的<web-app></web-app>添加:<resource-ref>
<res-ref-name>jdbc/mengshan </res-ref-name>
<res-type>javax.sql.DataSource </res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jdbc/mengshan </res-ref-name>
<res-type>javax.sql.DataSource </res-type>
<res-auth>Container </res-auth>
</resource-ref> 这个没必要
<Context path="/">
<Resource name="jdbc/mengshan" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<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></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/test</value>
</parameter>
</ResourceParams>
</Context>
一直没有注意这个问题,原来一旦配置了虚拟目录,META-INF这个Context.xml文件就不在生效了,此文件只在没有配置虚拟目录的时候才生效。
,怪不得我在配置虚拟目录的文件里加入这个
<Context>
<Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource>
</Context>
就可以了,感谢大家!
为seo留下一个足迹把,我搜了好长时间也没有解决
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'