Tomcat6 + MySQL5 配置连接池问题

javadellee 2008-03-06 05:42:34
在%tomcat%/conf/server.xml中配置好。

将mysql的驱动jar包,放到应用项目的lib包中,运行时,抛出Cannot load JDBC driver class 'com.mysql.jdbc.Driver' 异常。

而将mysql的驱动jar包,放到%tomcat%/lib/下,则能正常运行。

请教一下,是什么原因呀?
如果只想把mysql的驱动jar包,放到应用项目的lib包中,该如何解决?

谢谢~~~~
...全文
200 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
javadellee 2008-03-07
  • 打赏
  • 举报
回复
谢谢你的回复。

小弟也认为就如同Tomcat6 doc中写的一样,必须将其放到%tomcat%\lib中,或如bootupnow所说,放到放到classpath中。
bootupnow 2008-03-06
  • 打赏
  • 举报
回复
重新测试了一下,刚才是因为我原来已经在tomcat的java classpath里加入了 mysql的jdbc驱动(.jar),所以让我误认为了tomcat通过连接池(server.xml配置),能够找到WEB/lib下的.jar,当去掉classpath里的mysql jdbc驱动时,就出现了异常:
org.apache.tomcat.dbcp.dbcp.SQLNestedException:
Cannot load JDBC driver class 'com.mysql.jdbc.Driver'


再接着测试,修改配置文件,不采用连接池,普通的链接mysql,tomcat是可以搜寻到WEB/lib里的.jar文件的,运行正常!

得出很有可能的推测:
当使用server.xml中配置的连接池,tomcat所使用的ClassLoader类加载器并不是搜索WEB-INF/lib中内容!
所以如果要用连接池,应该把.jar放到classpath中,或者放到%tomcat%\lib中!


希望其他前辈补充!
bootupnow 2008-03-06
  • 打赏
  • 举报
回复
我的不会出现这个情况呀,你的server.xml配置是怎样的?
两种方式我都试过了,将jar放到%tomcat%\lib 或者是 WEB-INF\lib 下都是可以正常运行的。

我把我的贴出来

<Context docBase="D:/MysqlTest" path="/mysqltest" reloadable="true" crossContext="true" debug="0" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*" />
<Resource name="jdbc/webQuery" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/tmp" />
</Context>
javadellee 2008-03-06
  • 打赏
  • 举报
回复
在apache 上,查看了Tomcat6的doc, 有一段是:

1. Install Your JDBC Driver
Use of the JDBC Data Sources JNDI Resource Factory requires that you make an appropriate JDBC driver available to both Tomcat internal classes and to your web application. This is most easily accomplished by installing the driver's JAR file(s) into the $CATALINA_HOME/lib directory, which makes the driver available both to the resource factory and to your application.

---------------------
应该是说,这个driver除了被web应用程序调用外,还要被Tomcat的内部类调用
所以报的异常是,org.apache.tomcat.dbcp.dbcp.SQLNestedException,也即是Tomcat内部类调用时,出错。

还望指点~~~~

javadellee 2008-03-06
  • 打赏
  • 举报
回复
打开你的 <Context 配置,修改一下
<Context privileged="true"
-------------------------------------

谢谢,但修改后,还是不行。
依然抛出
org.apache.tomcat.dbcp.dbcp.SQLNestedException:
Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
老紫竹 2008-03-06
  • 打赏
  • 举报
回复
打开你的<Context 配置,修改一下
<Context privileged="true"
lirj_770 2008-03-06
  • 打赏
  • 举报
回复
不懂学习了
javadellee 2008-03-06
  • 打赏
  • 举报
回复
谢谢你的回复。

你说的那样导,实际上也就是把jar包放到 %对应项目%/WEB-INF/lib中。
不行的~~
yami251139 2008-03-06
  • 打赏
  • 举报
回复
你的eclipse的項目導入那個jar包就可以了。。。
property里面導。。。

81,092

社区成员

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

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