Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223915
  • 博文数量: 25
  • 博客积分: 1380
  • 博客等级: 中尉
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-02 18:19
文章分类

全部博文(25)

文章存档

2010年(4)

2009年(4)

2008年(17)

我的朋友

分类: Java

2008-08-18 11:24:32

        在J2EE应用开发当中,或许你碰到过虽然你已把DB驱动放在了你部署的war包或者directory里,但tomcat还是视而不见,提示诸如下面的信息给你:

Cannot load JDBC driver class 'com.ibm.db2.jcc.DB2Driver'
java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
 at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854)
 at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:141)
 at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760)

        如果你是用DriverManager而不是Datasource也不会出现这问题。问题就在于用Datasource的情况下,在Datasource被激发初始化时,Tomcat是用其自身的classloader 去load相关的驱动jar文件,而应用程序部署目录下的db驱动jar文件并不在tomcat这个classloader的“可视范围”内,相反,它会尝试去找/common/lib等目录下的jar文件,这就是要把db驱动copy到common/lib下的原因。

        同样的道理,当你在weblogic,websphere等Applicatioin Server下部署应用时,也是如此,道理一样。

阅读(3240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~