今天配置数据源时碰到一个问题,把数据源配置在server.xml中,然后在web.xml中引入资源,运行程序,会抛出
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
异常,在conf\Catalina\localhost下建立一个myapp.xml文件,文件内容如下:
<?xml version='1.0' encoding='GBK'?>
<Context docBase="E:\\kunlun\\dbpool\\WebRoot" path="/dbpool" reloadable="true">
<ResourceLink global="jdbc/dbpool" name="jdbc/dbpool" type="javax.sql.DataSource"/>
</Context>
再运行程序,就没问题了。
然后把web.xml中的resource-ref删掉,运行程序,正常。
接着把server.xml中的数据源配置删除,修改conf\Catalina\localhost下的myapp.xml,内容如下(web.xml中没有引入资源):
<?xml version='1.0' encoding='GBK'?>
<Context docBase="E:\\kunlun\\dbpool\\WebRoot" path="/dbpool" reloadable="true">
<Resource auth="Container" name="jdbc/dbpool"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/dbpool">
<parameter>
<name>factory</name>
<value>
org.apache.commons.dbcp.BasicDataSourceFactory
</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/myforum</value>
</parameter>
<parameter>
<name>password</name>
<value>admin</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>1000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>100</value>
</parameter>
</ResourceParams>
</Context>
运行程序,也是正常的。在两种正常的情况下,web.xml中都没有引入资源,我想问一下,配置数据源web.xml中要不要resource-ref,到底有什么用,网上查的资料都说要配一下,不过就这个情况看,好像没什么用。
我比较穷,只能给个5分了,嘿嘿,谁能帮忙解答下,谢谢