论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
金蝶Apusic应用服务器的数据源管理
 作者:佚名     2007-3-14 17:25:32        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

 

1            前言

在基于J2EE平台的应用开发中,大多数的应用都需要跟数据库打交道;而自从接触JDBC起,我们便不止一次的被告之:数据库资源是十分宝贵的系统资源,一定要谨慎使用。但令人遗憾的是,在笔者见过的大部分跟数据库相关的应用开发中,针对数据库资源的使用总是充斥着这样或者那样的问题。在本文中,笔者针对常见的一些错误或者不当的使用数据库资源的案例进行介绍与分析,并阐述金蝶Apusic应用服务器提供的一些增值特性,通过这些特性能够有效的避免某些错误的发生。

2            常见数据库资源错误/不当用法的案例分析

2.1     未正确的关闭数据库连接

申请了数据库连接,却没有及时的关闭它,这几乎是最常见的数据库连接使用错误。犯这种错误的原因有很多,以下是常见的一种低级错误:

 

public void foo() {

  Connection conn = getConnection();

 

  Statement stmt = null;

 

  try {

    conn = getConnection();

 

    stmt = conn.createStatement();

 

  } catch (Exception e) {

 

  } finally {

 

    close(stmt, conn);

 

  }

 

}

<示例代码一>

在上述案例中的第 行代码中,作者已经申请了一个Connection,但在第 行代码中,又申请了一个新的Connection,并且丢失了第一次申请的connection的引用,至此,当程序每调一次foo方法,将导致申请一个新的Connection而没有释放它,如此一来,当数据库达到能够承受的最大连接数时,将导致整个应用的运行失败。

避免这种错误的方法有很多,譬如,可采用类似于FindBugs(1)的代码分析工具对应用的源码进行分析,找出可能产生错误的代码。

此外,在应用中,我们需要非常频繁的对申请的数据库连接进行关闭与释放,此时,建议封装成某些工具类使用,并且要尽可能安全的关闭数据库连接。下面,我们以关闭StatementConnection的通用close方法的不同实现方案来比较:

不安全的关闭方法:

 

private void close(Statement stmt, Connection conn) {

 

  try {

    stmt.close();

    conn.close();

 

  } catch (Exception e) {

 

 

<示例代码二>

在上述代码中,倘若第 行代码中的stmt为空,或者stmt.close()方法出错并抛出异常,都将使第 行代码不能够正常调用,从而导致数据库连接无法释放,那么,更安全的写法应该是:

安全的关闭数据库资源方法:

 

private void close(Statement stmt, Connection conn) {

 

  try {

    if(stmt!=null) stmt.close();

 

  } catch (Exception e) {}

 

  try {

    if(conn!=null) conn.close();

 

  } catch (Exception e) {}

 

 

<示例代码三>

在修订后的代码中,我们可以看到,无论第 行代码中关闭stmt是否成功,程序都能够保证向下执行,从而正确的关闭conn

这些常用的数据库资源操作公用类,可以使用ApacheCommons DbUtils(2)组件。


1 2 3 4 下一页>>

责任编辑:lss
  相关新闻
Jsp中的Application使用
使用AppFuse框架进行开发的总结
生成Mapping文件、编辑HQL语言的好工具
用Apache Velocity模板引擎速造网站(1)
Oracle发布免费数据库管理工具Raptor
简易使用Apache Web让你的JSP“动”起来
在Applet中应用JDBC访问数据库
用Apache Velocity模板引擎速造网站(2)
JavaMail(JAVA邮件服务) API详解
Tutorial for building J2EE Applications using JBOS
Oracle发布免费数据库管理工具Raptor
生成Mapping文件、编辑HQL语言的好工具
使用AppFuse框架进行开发的总结
用Apache Velocity模板引擎速造网站(1)
用Apache Velocity模板引擎速造网站(2)
在Applet中应用JDBC访问数据库
重温Struts--ActionMapping和ActionForward
利用java Api打印JTable
Applet与Servlet通讯的四种方法及其比较
使用MRJAppBuilder创建本地应用
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号