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 分钟,未见任何异常。
测试,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值