struts數據源
?
僅使用struts開發時,我們可以利用struts-config.xml文件來配置連接數據庫的配置信息。(但不提倡這樣做,建議使用第三方的數據庫連接池等)
但是如果如上述做了,那么應該注意一個問題:
首先,在eclipse中為web項目添加struts支持時,并不能將數據源連接時所需的三個重要jar包自動導入,這三個jar包分別是:
(1)? ? ? ?commons-dbcp-1.2.1.jar(或commons-dbcp-1.1.jar)
(2)? ? ? ?commons-pool-1.2.jar(或commons-pool-1.1.jar)
(3)? ? ? ?struts-legacy.jar
如果你的WEB-INF/lib/下沒有這三個包,則在啟動web服務器時會顯示:
。。。。Marking servlet action as unavailable。
?javax.servlet.UnavailableException: Initializing application data source XXXXX
等一堆異常。
因為無法加載數據庫需要的文件,數據源連接不通,這樣在後續需要使用與數據庫連接的地方都會出錯,爲了避免這樣的情況,struts會默認停止所有與action有關的serverlet
只要加入上面的三個包,就一切ok咯~?
?
還需要注意的是:如果WEB-INF/lib/下沒有commons-collections-3.2.jar也會出錯
?
?
?
struts-config中這樣配置:??
<data-source??key="BBS_DS"??type="org.apache.commons.dbcp.BasicDataSource">??
? ?? ?? ???<set-property??property="autoCommit"??value="false"??/>??
? ?? ?? ???<set-property??property="driverClassName"??value="oracle.jdbc.driver.OracleDriver"??/>??
? ?? ?? ???<set-property??property="maxCount"??value="4"??/>??
? ?? ?? ???<set-property??property="minCount"??value="2"??/>??
? ?? ?? ???<set-property??property="password"??value="designer"??/>??
? ?? ?? ???<set-property??property="url"??value="jdbcracle:thin:@localhost:1521:SID"??/>??
? ?? ?? ???<set-property??property="username"??value="designer"??/>??
</data-source>??
?
========================================
?
(1)。單數據源配置
如果系統中只有一個數據源的情況下:
以下以 PostgreSQL 為例,配置文件如下,
<data-sources>
<data-source>
<set-property property="type" value="javax.sql.DataSource" />
<set-property property="driverClass" value="org.postgresql.Driver" />
<set-property property="url" value="jdbc:postgresql://DBServer:5432/DBName" />
<set-property property="maxCount" value="20" />
<set-property property="minCount" value="2" />
<set-property property="user" value="userName" />
<set-property property="password" value="userPassword" />
</data-source>
</data-sources>
在Action中調用:
DataSource ds = this.getDataSource(request);
這樣就可以取得以上配置的數據源,然后再取連接。
注意:
A.上述的數據源取得方法只適用于配置了單個數據源。
B.連接用后一定要調用 close()方法,以將連接返回連接池中,已備重用。
(2)。多數據源配置
多數據源配置中,在 Easy-Struts 和其他的圖形化配置工具中,目前都有問題,主要是 Struts 配置文件的 DTD 已經改過。
以下再提供 MySQL 數據源和 PostgreSQL 數據源為例,參見配置如下:
<data-sources>
<data-source>
<set-property property="key" value="postDS" />
<set-property property="type" value="javax.sql.DataSource" />
<set-property property="driverClass" value="org.postgresql.Driver" />
<set-property property="url" value="jdbc:postgresql://DBServer:5432/DBName" />
<set-property property="maxCount" value="20" />
<set-property property="minCount" value="2" />
<set-property property="user" value="userName" />
<set-property property="password" value="userPassword" />
</data-source>
<data-source>
<set-property property="key" value="mysqlDS" />
<set-property property="type" value="javax.sql.DataSource" />
<set-property property="driverClass" value="com.mysql.jdbc.Driver" />
<set-property property="url" value="jdbc:mysql://DBServer:3306/DBName" />
<set-property property="maxCount" value="20" />
<set-property property="minCount" value="2" />
<set-property property="user" value="userName" />
<set-property property="password" value="userPassword" />
</data-source>
</data-sources>
在Action中調用:
//MySQL 數據源取得
DataSource mysqlds = this.getDataSource(request,"mysqlDS");
//PostgreSQL 數據源取得
DataSource postds = this.getDataSource(request,"postDS");
連接的使用和注意事項同(1)。
有些書籍中不建議在 Action 中直接調用數據源,我覺得未嘗不可。
本人已經做過壓力測試,在Action中進行對數據庫的頻頻操作,
當有 500 用戶在線壓力 30 分鐘,未見任何異常。
測試,
總結
- 上一篇: Mac OS X移动或建立你目前文件的替
- 下一篇: struts數據庫訪問