tomcat6连接池配置问题

mengshan1986 2009-11-18 11:36:43
最近在配置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'
如何解决此问题呢?
...全文
440 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengshan1986 2009-11-18
  • 打赏
  • 举报
回复
这样是可以的啊!我第一个方法就是这么写的,但是不灵活啊!我想在项目的META-INF文件配置。
closewbq 2009-11-18
  • 打赏
  • 举报
回复
你这么配试验下:
在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>

zl3450341 2009-11-18
  • 打赏
  • 举报
回复
Cannot create JDBC driver of class '' for connect URL 'null' 

url错了?但是你说上面一个是好的
看看是不是哪里的名字或路径写错了
mengshan1986 2009-11-18
  • 打赏
  • 举报
回复
我的驱动版本是mysql-connector-java-5.1.10-bin.jar
mengshan1986 2009-11-18
  • 打赏
  • 举报
回复
我发现如果zaiTomcat 6.0\conf\Catalina\localhost找到对应的项目配置文件,加入以下就可以
<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目录,不存在驱动问题,因为上面我也读取成功了。
猫熊工作室 2009-11-18
  • 打赏
  • 举报
回复
1 下个最新的mysql驱动jar包试试 mysql-connector-java-5.1.5-bin.jar

2 同时驱动要放到你的项目WEB-INF/lib 下
mengshan1986 2009-11-18
  • 打赏
  • 举报
回复
问题解决!查看这里把http://www.javaeye.com/topic/373087
一直没有注意这个问题,原来一旦配置了虚拟目录,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'
config_man 2009-11-18
  • 打赏
  • 举报
回复
...
道光2008 2009-11-18
  • 打赏
  • 举报
回复
如果还是不行就改context.xml文件为:

<?xml version="1.0" encoding="UTF-8"?>
<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>
yihui366898 2009-11-18
  • 打赏
  • 举报
回复
望望。。。。。。。。。。。。。
道光2008 2009-11-18
  • 打赏
  • 举报
回复
并在该项目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>

这个没必要
道光2008 2009-11-18
  • 打赏
  • 举报
回复
第二种方法要把驱动拷贝到你工程的lib下面

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧