【问题标题】:Error connecting jmeter with sybase (15.7) with jtds-1.3.1将 jmeter 与 sybase (15.7) 与 jtds-1.3.1 连接时出错
【发布时间】:2024-01-25 16:03:01
【问题描述】:

我正在尝试将 Apache Jmeter (5.2.1) 与 Sybase 15.7 数据库连接,我用来建立此连接的驱动程序是位于 (c:/jmeter/lib/jtds) 的 jtds-1.3.1.jar -1.3. 1.jar) 并且在执行测试计划时出现以下错误:

2020-12-01 23: 38: 15,100 ERROR o.a.j.JMeter: Uncaught exception in thread Thread [Thread Group 1-1,6, main]
java.lang.AbstractMethodError: null
at net.sourceforge.jtds.jdbc.JtdsConnection.isValid (JtdsConnection.java:2833) ~ [jtds-1.3.1.jar: 1.3.1]
at org.apache.commons.dbcp2.DelegatingConnection.isValid (DelegatingConnection.java:874) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.commons.dbcp2.PoolableConnection.validate (PoolableConnection.java:270) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.commons.dbcp2.PoolableConnectionFactory.validateConnection (PoolableConnectionFactory.java:389) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory (BasicDataSource.java:2398) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory (BasicDataSource.java:2381) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.commons.dbcp2.BasicDataSource.createDataSource (BasicDataSource.java:2110) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.commons.dbcp2.BasicDataSource.getConnection (BasicDataSource.java:1563) ~ [commons-dbcp2-2.5.0.jar: 2.5.0]
at org.apache.jmeter.protocol.jdbc.config.DataSourceElement $ DataSourceComponentImpl.getConnection (DataSourceElement.java:361) ~ [ApacheJMeter_jdbc.jar: 5.2.1]
at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection (DataSourceElement.java:197) ~ [ApacheJMeter_jdbc.jar: 5.2.1]
at org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample (JDBCSampler.java:79) ~ [ApacheJMeter_jdbc.jar: 5.2.1]
at org.apache.jmeter.threads.JMeterThread.doSampling (JMeterThread.java:627) ~ [ApacheJMeter_core.jar: 5.2.1]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage (JMeterThread.java:551) ~ [ApacheJMeter_core.jar: 5.2.1]
at org.apache.jmeter.threads.JMeterThread.processSampler (JMeterThread.java:490) ~ [ApacheJMeter_core.jar: 5.2.1]
at org.apache.jmeter.threads.JMeterThread.run (JMeterThread.java:257) ~ [ApacheJMeter_core.jar: 5.2.1]
at java.lang.Thread.run (Thread.java:834) [?:?]
2020-12-01 23: 38: 15,104 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2020-12-01 23: 38: 15,105 INFO o.a.j.g.u.JMeterMenuBar: setRunning (false, * local *)

  • DATA BASE URL: jdbc: jtds: sybase: //XX.XXX: XXX.XX: XXXX / 门户
  • JDBC 驱动类:net.sourceforge.jtds.jdbc.Driver
  • 我排除这是一个通信问题,因为在同一台服务器上我配置了数据源,我可以从应用程序对 Sybase DB 进行查询

【问题讨论】:

    标签: jmeter sybase jtds


    【解决方案1】:

    您好像忘记添加Validation Query

    (String) 在将连接返回给调用者之前,将用于验证来自该池的连接的 SQL 查询。如果指定,此查询不必返回任何数据,它只是不能抛出 SQLException。默认值为空。如果未指定,连接将通过 isValid() 方法进行验证。示例值为 SELECT 1(mysql)、select 1 from dual(oracle)、SELECT 1(MS Sql Server)

    鉴于您正在使用适用于 MSSQL 和 Sybase 的 JDBC 驱动程序,您可以尝试使用 SELECT 1 作为验证查询:

    如果其他参数正确,它应该可以解决您的问题:

    更多信息:The Real Secret to Building a Database Test Plan With JMeter

    【讨论】: