今天用myeclipse在struts配置mysql的資料源時,老是提示找不到driver,就上網求助,終于找到了解決方法.
直接在struts-config.xml中右鍵data-sources然後New。 預設的type是: org.apache.struts.util.GenericDataSource ,struts自帶的一個資料庫連接配接池。 然後正确輸入各種property的value。 測試,好用。
如果将type選擇為: org.apache.commons.dbcp.BasicDataSource 這個DBCP的資料庫連接配接池。 然後鍵入正确的value。 測試,提示各種異常找不到Driver。
檢視DBCP的文檔,發現MYECLIPSE生成的配置XML元素有問題。
DBCP需要的是driverClassName和username這兩個properties。
而Myeclipse自動生成的是driverClass和user這兩個properties。
改過來之後發現DBCP的資料庫連接配接池也好用了,這應該算是MYECLIPSE開發struts的一個BUG吧,資料庫連接配接池的配置是按照struts預設的GenericDataSource來的。
總結:
myeclipse自動生成的strust-config.xml有幾點要注意:
1.driverClassName不是driverclass;
2.username不是user
3.不要設定loginTimeout.
action調用:DataSource ds=getDataSource(request,"datasource");
MSSQLServer2000資料源配置
<data-sources>
<data-source key="datasource" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<set-property property="url" value="jdbc:microsoft:sqlserver://localhost:1433;databaseName=zzb" />
<set-property property="username" value="sa" />
<set-property property="password" value="" />
<set-property property="maxActive" value="10" />
<set-property property="maxWait" value="5000" />
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false" />
</data-source>
</data-sources>
MySQL資料源配置
<data-sources >
<data-source key="datasource" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="password" value="1234" />
<set-property property="minCount" value="1" />
<set-property property="maxCount" value="10" />
<set-property property="username" value="root" />
<set-property property="driverClassName" value="org.gjt.mm.mysql.Driver" />
<set-property property="description" value="for struts attack aolution" />
<set-property property="url" value="jdbc:mysql://localhost:3306/attack" />
<set-property property="readOnly" value="false" />
<set-property property="autoCommit" value="true" />
</data-source>
</data-sources>
調用的時候在Action裡面getDataSource(request,"datasource");這個datasource就是上面那個key值,2者要對應,OK!!!
注意commons-collections.jar ,commons-pool.jar,commons-dbcp.jar還有資料庫驅動一定要注意拷貝到tomcat/common/lib裡面, commons-collections.jar ,commons-pool.jar,commons-dbcp.jar由Tomcat自帶,已經在上面的目錄中了,其實隻要将資料庫驅動放進去就可以了. commons-collections.jar ,commons-pool.jar,commons-dbcp.jar如果沒有的話去apache網站下就可以了