每個項目都會在數據庫上折騰一陣子,以前好搞定,因爲都在TOMCAT5.0的基礎上搞,不管是配ORCALE SQLSERVER2000還是MYSQL搞了N長時間已經習慣了.但是重來沒有奢望過用TOMCAT5.5弄這些,我所習慣的使用TOMCAT5.5僅僅在proxool.xml這種配置方式下使用.但是我一直相信TOMCAT5.5一定能在所有方式下使用.因爲配置僅僅是種方式.
昨天弄了一天,最後使用數據庫時報了 Cannot create JDBC driver of class '' for connect URL 'null'這樣的錯.以爲和以前一樣一定是哪個地方配置文件寫錯,結果查了半天沒有半個單詞寫錯
上網查了查,原來好多兄弟和我一樣都遇到過.按照某兄弟的寫法試了下沒有成功
咱們在TOMCAT5.0時期在TOMCAT_HOME/conf/Catalina/localhost裏的XXX.XML裏是這樣配置數據庫路徑的
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:/eclipse/workspace/BKGMS" path="/BKGMS" reloadable="true" workDir="D:/eclipse/workspace/BKGMS/work/org/apache/jsp">
<Resource auth="Container" name="RedstoneSql" type="javax.sql.DataSource"/>
<ResourceParams name="better">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=bkgms</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
</ResourceParams>
</Context>
按某兄弟的寫法 在 <Resource auth="Container" name="better" type="javax.sql.DataSource"/>之前加上 <ResourceLink global="better" name="better" type="javax.sql.DataSource"/>即可搞定
但是重起TOMCAT後 報 unable to get connection :no suitable driver
我靠,我想這是不靈的,再查.大多數兄弟都說了,TOMCAT5.5和TOMCAT5.0配置不同
自Tomcat5.5以後,<context>元素的<Resoucepram>元素取消,原參數元素都以Resouce的屬性出現.
而應該這樣寫,順便把<ResourceLink >也加進去
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:/eclipse/workspace/BKGMS" path="/BKGMS" reloadable="true" workDir="D:/eclipse/workspace/BKGMS/work/org/apache/jsp">
<Resource auth="Container" name="better" type="javax.sql.DataSource" maxWait="10000" maxIdle="30" maxActive="100" username="sa" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=bkgms"/>
<ResourceLink global="better" name="better" type="javax.sql.DataSource"/>
</Context>
解釋一下:1.path是指定訪問該web應用的URL入口;
2.docBase指定web應用的文件路徑,可以是絕對路徑,也可以是相對於Host的appBase屬性的相對路徑;
3.type
4.maxActive是DBCP中處於活動狀態的數據庫連接的最大數目,取0表示不受限制
5.maxIdle是DBCP中處於空閒狀態的數據庫連接的最大數目,取0表示不受限制
6.maxWait是是DBCP中的數據庫連接處於空閒狀態的最長時間(以毫秒爲單位)取0表示無限期等待
7.username是數據庫登陸名
8.password是數據庫登陸口令
9.driverClassName是隻定數據庫的jdbc驅動程序
10.url是指定連接數據庫的URL,testDBCP是我的數據庫名。
報 unable to get connection :no suitable driver
是從eclipse中啓動tomcat,發現啓動時找不到org.apache.commons.dbcp.BasicDataSourceFactory,於是把Resouce元素中的factory="org.apache.commons.dbcp.BasicDataSourceFactory"刪去,於是錯誤解決。
當然不要忘記在web.xml中加
<resource-ref>
<description>DB Connection</description>
<res-ref-name>better</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
不過如果使用SQLSERVER2000 也要確保打了SP4補丁