我想這算個(gè)BUG吧。

 

直接在struts-config.xml中右鍵data-sources然后New。

默認(rèn)的type是:

org.apache.struts.util.GenericDataSource

struts自帶的一個(gè)數(shù)據(jù)庫(kù)連接池。

然后正確輸入各種property的value。

測(cè)試,好用。

 

如果將type選擇為:

org.apache.commons.dbcp.BasicDataSource

這個(gè)DBCP的數(shù)據(jù)庫(kù)連接池。

然后鍵入正確的value。

測(cè)試,提示各種異常&找不到Driver。

 

查看DBCP的文檔,發(fā)現(xiàn)MYECLIPSE生成的配置XML元素有問(wèn)題。

DBCP需要的是driverClassName和username這兩個(gè)propertys。

而Myeclipse自動(dòng)生成的是driverClass和user這兩個(gè)propertys。

 

改過(guò)來(lái)之后發(fā)現(xiàn)DBCP的數(shù)據(jù)庫(kù)連接池也好用了:)

這應(yīng)該算是MYECLIPSE開發(fā)struts的一個(gè)BUG吧,數(shù)據(jù)庫(kù)連接池的配置是按照struts默認(rèn)的GenericDataSource來(lái)的。如果能動(dòng)態(tài)的在選擇數(shù)據(jù)庫(kù)連接池的時(shí)候,找尋set()/get()方法來(lái)生成屬性的名字應(yīng)該更好。

也看出來(lái)不同的數(shù)據(jù)庫(kù)連接池在命名規(guī)則方面存在的一些差異。

其實(shí)很簡(jiǎn)單的東西,我卻花費(fèi)了半天的時(shí)間,原因是我太相信工具了,以為生成的東西一定是正確的,所以一直在想是不是別的方面出錯(cuò)了。得到這次教訓(xùn)之后,要更加清晰的對(duì)工具持懷疑態(tài)度了。不能太過(guò)相信和依靠,還是自己對(duì)這些技術(shù)的了解最重要。

 

PS:TOMCAT有自帶DBCP。不過(guò)我是自己從jakarta上面下的commons dbcp放到自己的lib里面的,當(dāng)然,官方doc上面有這樣的說(shuō)明:

Commons-DBCP depends at runtime on commons-pool and commons-collections .

所以記得要把這兩項(xiàng)也下回來(lái)和dbcp的jar文件一起放進(jìn)lib才能保證不出錯(cuò)。

總之,認(rèn)真+心細(xì),才能更好的解決問(wèn)題。

 

 

本文環(huán)境:
Win2003  + jdk1.5.0_01
Tomcat 5.5 +  MySql4.1
Eclipse 3.0.1 + Myeclipse 3.8.4

本文提到的一些軟件的下載地址:

J2SE 5.0(SUN弄的這些亂七八糟的名字真討厭,混亂的感覺(jué)):
http://java.sun.com/j2se/1.5.0/download.jsp

Tomcat:
http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi

MySql4.1:
http://dev.mysql.com/downloads/

Eclipse:
http://www.eclipse.org/downloads/index.php

Jakarta commons(DBCP和其所需要的commons pool和commons collections都是在這里下):
http://jakarta.apache.org/site/downloads/downloads_commons.html