您的位置:首页 > 其它

Cannot create JDBC driver of class '' for connect URL 'null'

2013-10-29 15:00 645 查看
如果你在使用jndi配置数据源的过程中反复出现下面的错误,而且你已经使用了很多方式都无法获取正确的数据源,那么就不要再浪费时间了,删除其他的配置方法按下面的方法进行配置,保证你能够有一个好使的数据源,

使用jndi的方式配置tomcat的数据源报了下面的错误:

org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)

at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)

at com.TestConn.doGet(TestConn.java:29)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方法:这说明你的jdbc的数据源并没有被注册,jndi的数据源大致分两部:

第一步:配置web.xml文件

在你的项目的web.xml文件之中加入如下的配置:

<resource-ref>

<description>DB Connection</description>

<!--这个就是你要连接的数据源名称webglDS_A6,下面的Context.xml文件中的数据源名称一定要和此名称一致-->

<res-ref-name>webglDS_A6</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

第二步:配置Context.xml文件

Context.xml文件之中就是连接数据库的详细信息(注意是Context.xml而不是context.xml),这部分的设置有两种情况:

情况一:项目是通过eclipse视图部署到tomcat之中

这时,你只需要在META-INF目录下面建一个Context.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<Context>

<!--下面的配置只是针对tomcat5.0 -->

<Resource name="webglDS_A6" type="javax.sql.DataSource" />

<ResourceParams name="webglDS_A6">

<parameter>

<name>auth</name>

<value>Container</value>

</parameter>

<parameter>

<name>maxWait</name>

<value>5000</value>

</parameter>

<parameter>

<name>maxActive</name>

<value>10</value>

</parameter>

<parameter>

<name>password</name>

<value>1</value>

</parameter>

<parameter>

<name>url</name>

<value>jdbc:oracle:thin:@10.11.112.80:1521:orcl</value>

</parameter>

<parameter>

<name>driverClassName</name>

<value>oracle.jdbc.driver.OracleDriver</value>

</parameter>

<parameter>

<name>maxIdle</name>

<value>1</value>

</parameter>

<parameter>

<name>username</name>

<value>pay</value>

</parameter>

</ResourceParams>

<!-- tomcat6.0和tomcat7.0用下面的配置

<Resource name="webglDS_A6" auth="Container"

type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"

username="pay" password="1" driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@10.11.112.80:1521:orcl"/> -->

</Context>

只是有一点tomcat5.0和tomcat6.0\7.0采用不同的设置,这一点无关紧要,下面就可以对数据源写一个jsp或者servlet进行测试,下面是主体代码,数据源名称为webglDS_A6

Connection conn = null;

Context ctx = null;

ctx = new InitialContext();

Context envContext = (Context) ctx.lookup("java:comp/env");

DataSource ds = (DataSource) ctx.lookup("java:comp/env/webglDS_A6");

// 取出连接

conn = ds.getConnection();

情况二,项目直接以war包的形式部署到tomcat之中,这时候就需要在服务器的conf\Catalina\localhost目录下面建立以你的项目名称命名的xml文件,例如我的项目叫hh,那么文件名就应该叫hh.xml,建好之后的目录应该是这样的conf\Catalina\localhost\hh.xml

hh.xml文件的内容就是上述Context.xml文件的内容,只是在Conext节点加入下面的信息

<Context docBase="E:\123\jakarta-tomcat-5.0.28\webapps\hh" path="/hh" reloadable="true">

这样之后你的数据源就可用了。

总结一下:jndi的数据源配置分两步:配置web.xml和配置Context.xml,没有其他
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐