struts连接mysql_Struts数据库连接池配置

[Jakarta的公共连接池实现 - BasicDataSource]

如果你的手头没有连接池的本地(native)实现,你可以使用Jakarta提供的公共连接池实现[org.apache.commons.dbcp.BasicDataSource],它可以和DataSource管理器"合作"的很好。另外,Struts还在它的util包里包含了一个GenericDataSource类,这也是一个连接池实现。但是这只是一个非常简单的实现方案,不推荐使用,因为它可能在Struts的以后版本中被BasicDataSource或其它的数据源实现替换掉。

下面是一段Struts-config.xml配置文件中的数据源配置(使用GenericDataSource数据源实现),你可以更改相应的设置以适合你自己的系统。

property="autoCommit"

value="false"/>

property="description"

value="Example Data Source Configuration"/>

property="driverClass"

value="org.postgresql.Driver"/>

property="maxCount"

value="4"/>

property="minCount"

value="2"/>

property="password"

value="mypassword"/>

property="url"

value="jdbc:postgresql://localhost/mydatabase"/>

property="user"

value="myusername"/>

使用BasicDataSource数据源实现的配置方案如下:

property="driverClassName"

value="org.postgresql.Driver" />

property="url"

value="jdbc:postgresql://localhost/mydatabase" />

property="username"

value="me" />

property="password"

value="test" />

property="maxActive"

value="10" />

property="maxWait"

value="5000" />

property="defaultAutoCommit"

value="false" />

property="defaultReadOnly"

value="false" />

property="validationQuery"

value="SELECT COUNT(*) FROM market" />

注意,你可以在你的应用系统中定义不止一个数据源,你可以根据需要定义多个数据源,并为它们分别起一个逻辑名(logical name)。这样做可以给你的应用系统提供更好的安全性和可测量性(scalability),你还可以定义一个专用于测试的数据源。

配置好DataSource以后,你就可以在你的应用系统中使用这些数据源了。下面这段代码演示了怎样在Action类的execute方法中通过这些数据源来生成数据库连接。

需要3个包(别忘了数据库驱动包)

commons-collections-3.1.jar

commons-dbcp-1.2.1.jar

commons-pool-1.2.jar

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception

{

DataSource dataSource;

Connection cnn;

try

{

dataSource = getDataSource(request);

cnn = dataSource.getConnection();

// 数据连接已经建立了,你可以做你想做的事情了

}

catch (SQLException e)

{

getServlet().log("处理数据库连接", e);

}

finally

{

// 在finally块里包含这些代码

// 用以保证连接最后会被关闭

try

{

cnn.close();

}

catch (SQLException e)

{

getServlet().log("关闭数据库连接", e);

}

}

}

注意:如果你使用公共的BasicDataSource,你提供给pingQuery属性的查询语句(如果你设置了话)必须至少要能返回一行记录。

例子:SELECT COUNT(*) FROM VALIDTABLE

你可以把VALIDTABLE替换成你的数据库中包含的任何有效的表。

数据库连接字符串

SQLServer2000:

driverClassName:com.microsoft.jdbc.sqlserver.SQLServerDriver

url: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=databasename

MySql:

driverClassName:com.mysql.jdbc.Driver

url: jdbc:mysql://localhost/databasename

[使用多个数据源]

如果你需要在模块(Module)中使用多于一个的数据源,你可以在配置文件的元素里包含一个key属性。

…属性配置略, 同上…

…属性配置略, 同上…

你代码里,你可以通过这些key获得不同的数据源。代码如下:

try

{

dataSourceA = getDataSource(request, "A");

dataSourceB = getDataSource(request, "B");

你可以根据需要为每一个模块设置多个数据源。但同一模块里每个数据源的key属性必须唯一,因为Struts模块系统是以每一个模块为单位管理命名空间的。

posted on 2006-04-19 14:45 飞鸟 阅读(2247) 评论(0)  编辑  收藏 所属分类: Struts

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值