正 文

检测你数据库连接的物理状态


www.7dspace.com  更新日期:2006-1-15 3:25:39  七度空间


信赖软件制造商的API

处理连接断开的一种方法是使用驱动程序专用的API,你可以使用这个API来建立到数据库的连接。现在让我们来看看Oracle的JDBC API。OracleConnectionCacheImpl这个类会实现javax.DataSource接口,并在你每次请求的时候验证一下连接。此外,它还能够通过缓冲随后请求的连接来重复使用这个连接。换句话说,如果你关闭了数据库,然后尝试使用一个连接,你就会得到一个明确阐明了原因的SQL异常。看看Listing A,里面有数据源用法的一个例子。

验证连接

另一个解决方案是你自己进行连接验证。你可以编写一个连接工厂,让其将连接返回给请求者之前检测连接的情况。将验证机制从连接工厂里抽象出来是一个很好的代码编写惯例。要实现这一目的,你就要应用GoF策略模式,它会引入一个负责进行连接验证的接口,如图A所示。

图A

类图表

Listing B里的AbstractDataSource类提供了DataSource接口的基础实现,这样就为设置和访问连接的属性,包括JDBC驱动程序类、URL、用户名和密码,提供了便利的方法。

这个类的确切实现有JdbcDataSource(Listing C)和ValidDataSource(Listing D)。Listing C里的类为每个请求都创建了一个Connection对象。Listing E里的类通过使用ConnectionValidator从而提供了连接验证的能力。

Listing F里的SqlConnectionValidator是这个接口的简单实现,在这个接口里,一个快速的SQL查询会被执行,以验证你认为需要进行验证的连接。你的这一目的是通过调用validateConnection(Connection conn)方法来实现的,它会在碰到任何连接问题的时候给出一个SQL异常。

验证的好处

无论你选择使用哪种方法,建立一个有效的数据库连接都是极其重要的,尤其是在处理关键的实时应用程序的时候。虽然定制连接验证这种方式能够为你提供更好的灵活性和API的独立性,但是同使用软件制造商所提供的API相比而言,它会降低整体的性能。你必须决定,增强可控制性所带来的好处,同相应所增加的复杂性和代价相比是否值得。

2页,页码:[1] [2] 

上一篇:用RMI实现基于Java的分布式计算
下一篇:使用DOM和XSL来格式化由Java提取的数据
标题:检测你数据库连接的物理状态 作者: 来源:开发者在线
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐