Soloman Barghouthi: 用于取消恶意或未授权数据库查询的技术
2010-05-21 00:00:00 来源:WEB开发网清单 1 显示了简单示例,该示例执行一个您将想要识别和删除的数据库请求。
清单 1
.....
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("jdbc/myDS");
conn=ds.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery("Select * from myEmpTable");
while(rs.next()){
out.println(rs.getString(1));
要在这里利用标记特性,您需要用客户机信息来标记数据库连接。清单 2 显示了如何实现这一点。
清单 2
import com.ibm.websphere.rsadapter.WSConnection
public void displayInfo()
{…..
Properties props = new properties();
props.setProperty(WSConnection.CLIENT_APPLICATION_NAME,
"myspecialAppappname_displayInfo");
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("jdbc/myDS");
conn=ds.getConnection();
((WSConnection)conn).setClientInformation(prop);
stmt=conn.createStatement();
rs=stmt.executeQuery("Select * from myEmpTable");
while(rs.next()){
out.println(rs.getString(1));
}
现在这个应用程序用 myspecialAppappname_displayInfo 标记注释了它使用的连接。这样数据库连接就被客户机信息所标记,数据库管理员可以通过简单地查询连接的注释值来识别和取消与应用程序相关的任务。例如,一个 DB2 数据库管理员可以执行以下步骤来识别和取消这样一个查询:
从 DB2 命令窗口,发出以下指令来显示所有的数据库连接信息(图 4):
db2 get snapshot for applications on sample
图 4.获取快照命令
查看原图(大图)
如图 4 所示,TP Monitor 客户机应用程序名称有一个值 myspecialAppappname_displayInfo,这个值是由应用程序进行设定的,用于识别连接。
您可以终止正用于执行查询的连接,方法是使用 Application 句柄值(这里是 78)并运行 DB2 force application 命令:
db2 force application (78)
这个应用程序命令会造成运行错误请求的连接被终止,并对应用程序抛出一个 StaleConnectionException。这样应用程序就必须像它遇到其它 StaleConnectionException 时一样来处理异常。
虽然结束一个挂起或者长时间运行的查询看起来是个复杂的任务,但是 WebSphere Application Server 的标记特性提供了一个简化任务的简便方法。这里所介绍的技术能适用于任何数据库,只要这个数据库使用类似于 DB2 的工具来显示和取消一个给定查询。
Tags:Soloman Barghouthi 用于
编辑录入:爽爽 [复制链接] [打 印]- ››Soloman Barghouthi: 用于取消恶意或未授权数据库...
- ››用于监控DB2实例和数据库的新的DB2 UDB工具
- ››用于屏幕监测转发、摄像监控转发的清扬视频会议软...
- ››用于个人信息保护的国内外解决方案之比较
- ››用于生成SQL Server数据库对象脚本的选项
- ››用于监控 DB2 实例和数据库的新的 DB2 UDB 工具
- ››用于备份和恢复的SQL Server文件组
- ››用于解决Windows XP中的打印问题的资源
- ››用于截取特定长度的字符串的php函数
- ››用于正则表达式的抽象Java API
- ››用于正则表达式的抽象JavaAPI
- ››用于Java SE的Hibernate
更多精彩
赞助商链接