I have a Gitlab pipeline that calls JMeter from the justb4/jmeter:latest
Docker image.
Everything was working fine, but then I forgot when I checked in the latest version of my JMX that I was using the MSSQL JDBC driver which is installed locally, so I get the expected ClassNotFoundException below.
What is the/a correct way to make the relevant DLL and JAR available to my gitlab-ci file?
Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at org.apache.commons.dbcp2.DriverFactory.createDriver(DriverFactory.java:49)
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:462)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:528)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:734)
at org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl.getConnection(DataSourceElement.java:362)
at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataSourceElement.java:198)
at org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:80)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
at java.lang.Thread.run(Thread.java:748)
The Microsoft JDBC driver needs to be present in the image you're deploying so you need to create your own Docker image based on the Dockerfile from the justb4/jmeter:latest
and add one more line to it between
&& tar -xzf /tmp/dependencies/apache-jmeter-${JMETER_VERSION}.tgz -C /opt \
and
&& rm -rf /tmp/dependencies
you need to add something like:
&& curl -L --silent https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/9.4.1.jre8/mssql-jdbc-9.4.1.jre8.jar > /opt/apache-jmeter-${JMETER_VERSION}/lib \
Then you need to:
justb4/jmeter:latest
with your own image tag:versionGoing forward be aware that you can build a JMeter docker image from scratch yourself without having to rely on other people images, see Make Use of Docker with JMeter - Learn How article for comprehensive information.