本主题介绍了 Parasoft JDBC 驱动器,它用于记录数据库查询及其相应的结果数据。一旦配置好 Parasoft JDBC 驱动程序,并设置好被测应用程序(AUT)与之通信,便可以使用 JDBC 控制器在用户界面切换模式(如转移、录制、虚拟化等),而无需重新启动应用程序服务器。

章节目录:

Parasoft JDBC 驱动程序介绍

使用 Parasoft JDBC 驱动程序和 JDB 控制器执行数据库虚拟化(如 记录数据库中所述)。Parasoft JDBC 驱动程序是一种特殊的 JDBC 驱动程序,它可以充当应用程序与其常规 JDBC 驱动器之间的中间人。它实现了 JDBC API,这些 API 允许其像任何标准数据库驱动程序一样配置到 Java 应用程序服务器中。

一旦完成配置,驱动程序可以:

  • 将 JDBC 调用(SQL 查询)委托给原始驱动程序,同时可以选择性地将查询和它们所关联的结果集发送给要记录的 Parasoft Virtualize 服务器。有了容错模式,请求在实时数据库失败(SQL 异常)时将自动重新路由到 Parasoft Virtualize 服务器。
  • 将查询委托给 Parasoft Virtualize 服务器,它可以反过来以与原始数据库连接相同的方式(一旦虚拟资产中的 SQL 响应器完成配置)响应给查询。有了混合模式,查询在没有找到匹配的“虚拟”响应时将自动委托给原始驱动器。

远程控制 Parasoft JDBC 驱动程序

通过 Virtualize UI(或环境管理器 UI),您可以使用 JDBC 控制器来控制一个 Parasoft JDBC 驱动程序或一组驱动程序的设置。例如,可以对部署到集群环境中的 JDBC 驱动程序进行单点控制。或者,如果在一个 AUT 中使用多个驱动程序(或数据源),则可以协调它们的部署配置(例如,可以让它们同时切换模式)。

使用 UI 控件,可以在无需重启 AUT 的情况下更改模式(录制、转移、虚拟化、混合、容错)和其他 Parasoft JDBC 驱动程序设置(如日志)。如果在 AUT 不在线时更改设置,则这些更改将在启动时应用。

支持 SQL 查询

Parasoft Virtualize 支持 SQL SELECT 语句的录制和虚拟化。支持具有多个 in、out 和 inout 参数(包括 Cursor/ResultSet 参数)的存储过程和函数。对于 Oracle 和 DB2 来说,它们支持记录具有多个 out 参数的存储过程,其中每个参数返回一个指针。

当查询被路由到实际的 JDBC 驱动程序时(即在录制或转移模式下),INSERT、UPDATE 和 DELETE 查询被分配给原始数据库/驱动程序。

在查询被发送到虚拟资产时,调用 Statement.executeUpdate() 方法将返回值 0,Parasoft Virtualize 将不会模拟 INSERT、UPDATE 和 DELETE 语句的实际行为。因此,记录到 Virtualize 的任何数据源都将不会因这些 SQL 查询而更改。

录制数据的条件

CallableStatement 关闭时,或者当所有声明的 out 参数和结果集都被读入时,都会记录结果。若要记录结果集,则必须对它们调用 close。调用 Statement 或 PreparedStatement 的 close 将意味着将不记录来自结果集的数据。记录的行名基于用来检索它们的接口方法。调用 ResultSet.getString(String columnLabel) 将在记录数据中使用 columnLabel。如果使用行索引,则记录的数据将使用索引号作为列标签。

当结果集不是通过显式调用 ResultSet.close() 关闭时,结果将在 Parasoft JDBC 驱动程序停止记录时记录。录制结束后,Parasoft JDBC 驱动程序将检查每个不是显式关闭的结果集,然后将它们提交到要记录的 Virtualize 服务器。

存储过程

Virtualize 和 Parasoft JDBC 驱动程序通过 CallableStatement 接口支持存储过程。Virtualize 将在对其实现没有任何可见性的情况下,模拟存储过程的返回和输出参数值。如果存储过程执行 UPDATE、INSERT 或 DELETE 查询,则 Virtualize 中记录的数据将不会受到该查询的影响。

支持返回一个 ResultSet(要么作为输出参数,要么作为函数返回值)的函数/过程。

目前不支持以下类型:

  • 返回多个 ResultSet 的输出参数的函数/过程。
  • 返回多个 ResultSet 的一个结果集和一个输出参数的函数/过程。
  • No labels