WEB开发网
开发学院软件开发Java Soloman Barghouthi: 用于取消恶意或未授权数据库... 阅读

Soloman Barghouthi: 用于取消恶意或未授权数据库查询的技术

 2010-05-21 00:00:00 来源:WEB开发网   
核心提示: 清单 1 显示了简单示例,该示例执行一个您将想要识别和删除的数据库请求,Soloman Barghouthi: 用于取消恶意或未授权数据库查询的技术(3),清单 1.....javax.sql.DataSourceds=(javax.sql.DataSource)ctx.lookup("

清单 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.获取快照命令
Soloman Barghouthi: 用于取消恶意或未授权数据库查询的技术

查看原图(大图)

如图 4 所示,TP Monitor 客户机应用程序名称有一个值 myspecialAppappname_displayInfo,这个值是由应用程序进行设定的,用于识别连接。

您可以终止正用于执行查询的连接,方法是使用 Application 句柄值(这里是 78)并运行 DB2 force application 命令:

db2 force application (78)

这个应用程序命令会造成运行错误请求的连接被终止,并对应用程序抛出一个 StaleConnectionException。这样应用程序就必须像它遇到其它 StaleConnectionException 时一样来处理异常。

虽然结束一个挂起或者长时间运行的查询看起来是个复杂的任务,但是 WebSphere Application Server 的标记特性提供了一个简化任务的简便方法。这里所介绍的技术能适用于任何数据库,只要这个数据库使用类似于 DB2 的工具来显示和取消一个给定查询。

上一页  1 2 3 

Tags:Soloman Barghouthi 用于

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接