Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提

之前写过一篇文章:https://qa-lsq.blog.csdn.net/article/details/119782694
只是简单尝试了一下生成一个随机手机号码。
但是如果在工作中一个实际场景要用的二次开发,可能会遇到一些问题。

比如这样一个场景:
Mobile或者前端调用部分接口,比如登录,验证码发送等等,要求手机号,密码,验证码等信息需要加密。
在调用接口时的值是经过加密的值,后端收到相应的信息后再解密。

这就使得在使用jmeter调用接口的时候,需要先把手机号,密码等值在其他地方加密一下,然后再填到jmeter里去,非常麻烦。
Jmeter二次开发就能完美的解决这个问题。

问题1

但在实际操作过程中遇到了一些问题。

首先讲一下环境,公司提供的电脑权限是限制的很死的,我没有权限修改环境变量。
同时java JDK的版本是17,IDEA只能下载社区版。

这就导致一个问题,使用社区版的IDEA创建Maven项目,然后打jar包,一切的做法都是对的,但偏偏打出来的jar包Jmeter无法读取。

原因是创建的maven项目中,pom.xml文件少了如下这段:
在这里插入图片描述

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>7</source>
          <target>7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

如果少了这段,maven未必能正确支持j你的java版本,打出来的jar包jmeter识别不了。

这边还有一个问题,

<source>7</source>
<target>7</target>

这边我填的是7,不是17
因为经过确定的尝试,填17打出来的jar包jmeter也无法识别,需要填写低版本
我推测是因为我使用的jmeter版本较低的原因,与高版本的java JDK不兼容。

问题2

我之前尝试的是生成随机手机号码,这个函数非常简单,不需要特别的jar包支持。
仅需二次开发所必须的一些jar包,如下:
在这里插入图片描述

这些jar包在下载好的meter里都会自带的。

但如果我要实现其他的功能,需要另外的jar包支持呢。
我贴一下此次二开的加密代码,密钥用XXXXXXXXX替换:

package org.examples.functions;

import cn.hutool.crypto.Mode;
import cn.hutool.crypto.symmetric.AES;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.Function;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.util.JMeterUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.security.Security;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;


public class EcbEncryFunctionsAA extends AbstractFunction {

	//密钥
    private static final String ACE_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX";

    private static final String key = "__ecbEncryptfunctions";

    private static final List<String> desc = new LinkedList<String>();

    private static String middleString = "";

    static{
        desc.add(JMeterUtils.getResString("Name of encrypt String using ECB"));
    }

//    public static void main(String[] args) {
//        System.out.println(aesEncryptPKCS7Padding("13944566740"));
//    }

    @Override
    public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {

        Security.addProvider(new BouncyCastleProvider());
//        String ecb_key = ACE_KEY;
        String padding="PKCS7Padding";
        AES aes = new AES(Mode.ECB.name(),padding, ACE_KEY.getBytes());
        // 加密并进行Base转码
        String encrypt = aes.encryptBase64(middleString);

        return encrypt;
    }

    @Override
    public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {

        if (collection.size() != 1) {
            throw new InvalidVariableException("Expected 1 parameter, but got " + collection.size());
        }

        CompoundVariable parameter = collection.iterator().next();

        middleString = parameter.execute();
    }

//    private static String aesEncryptPKCS7Padding(String text) {
//        Security.addProvider(new BouncyCastleProvider());
//        String ecb_key = ACE_KEY;
//        String padding="PKCS7Padding";
//        AES aes = new AES(Mode.ECB.name(),padding, ecb_key.getBytes());
 加密并进行Base转码
//        String encrypt = aes.encryptBase64(text);
//        return encrypt;
//    }

    @Override
    public String getReferenceKey() {
        return key;
    }

    @Override
    public List<String> getArgumentDesc() {
        return desc;
    }
}

这段加密需要两个jar包支持
在这里插入图片描述

经过测试,这段加密代码可用,而且打包之后可以在jmeter的函数助手里看见这个函数
但是在实际调用这个函数的时候jmeter会报错:
在这里插入图片描述

意思是没有相应的jar包支持

这边需要把所有依赖的jar包同样放到lib/ext/下
这边需要把所有依赖的jar包同样放到lib/ext/下
这边需要把所有依赖的jar包同样放到lib/ext/下

maven下载的jar包在.m2文件下,这边不多解释
在这里插入图片描述

解决这些问题之后,我的加密就可以在jmeter里使用了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/287794.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】LeetCode-10. 正则表达式匹配

10. 正则表达式匹配。 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 …

conda: error: argument COMMAND: invalid choice: ‘activate‘

1.问题 2.解决方法 1.寻找基本路径 conda info | grep -i base environment2.更新资源 source /Users/suhang/miniconda3/etc/profile.d/conda.sh3.重新运行命令 conda activate chatglm参考图&#xff1a;

UI5与后端的文件交互(一)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、RAP的开发1. 创建表格2. 创建CDS Entity3. 创建BDEF4. 创建implementation class5. 创建Service Definition和Binding6. 测试API 二、创建UI5 Project1. 使…

jsp+ssm+mysql实现的酒店预定管理系统项目----计算机毕业设计

项目介绍 jspssm框架&#xff08;spring、springMVC、mybaits&#xff09;实现的酒店预定管理系统的源码和视频开发教程。本系统分前台和后台管理两部分&#xff0c;前台实现了用户登录注册、查看房型信息、预定房间、提交订单、查看个人订单、修改个人资料等&#xff0c;后台…

打造高效会员卡营销策划方案,提升门店业绩

在激烈的行业竞争中&#xff0c;如何有效提升店铺的业绩&#xff0c;提高客户粘性和消费频次呢&#xff1f;答案可能就在你手中——那就是有效的会员卡营销策略。下面给大家探讨如何设计会员卡营销策划方案&#xff0c;从而增加客户的忠诚度&#xff0c;并推动销售增长。以目前…

亚信安慧AntDB数据库引领数字时代:数字驱动创新峰会主旨演讲深度解析

近日&#xff0c;庄严肃穆的数字驱动创新峰会在中国首都北京隆重召开&#xff0c;聚焦于探讨数据经济的创新前沿。在此次盛会中&#xff0c;备受瞩目的亚信安慧AntDB数据库荣幸受邀参与&#xff0c;该数据库的副总裁张桦以其深刻见解和卓越经验发表了引人瞩目的主旨演讲。 图1&…

2024年个人工作计划怎么写?新年待办计划这样写更方便

元旦的钟声还在耳边回响&#xff0c;2024年的新篇章已经开启。面对新的一年&#xff0c;我深知一个清晰、实用的个人工作计划是多么重要。它不仅是指引我前进的灯塔&#xff0c;更是我实现目标、提升效率的秘密武器。 但如何制定这样一个计划呢&#xff1f;在过去&#xff0c;…

Github 2023-12-31 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-31统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目3Swift项目1Java项目1HTML项目1Astro项目1Python项目1C项目1Dart项目1Jupyter Notebook项目1C项…

github短视频去除水印项目Douyin_TikTok_Download_API介绍

当下正值短视频盛行的时代。在我们浏览短视频的同时&#xff0c;经常能发现一些精美的图片、引人入胜的文案以及吸引眼球的视频&#xff0c;想要将它们保存到本地。然而&#xff0c;保存下来的图片或视频通常伴随着不太愉悦的水印&#xff0c;这显著降低了使用体验。因此&#…

深度学习|10.2 边缘检测示例 10.3 更多边缘检测

文章目录 如何在编程中实现卷积运算使用卷积实现边缘检测结果矩阵的元素正负性质的意义水平分类器如何构造卷积运算使用的矩阵 原矩阵通过一个过滤器&#xff08;filter&#xff09;/核心&#xff08;kernel&#xff09;来生成一个新的矩阵。 如何在编程中实现卷积运算 使用卷积…

梦百合杯8强/半决赛完赛 党毅飞、李轩豪晋级决赛

2024年1月3日,第五届“MLILY梦百合0压床垫杯”世界围棋公开赛(以下简称:梦百合杯)8强/半决赛滁州圆满落幕,党毅飞2:0胜廖元赫,李轩豪2:0胜刘宇航,两位棋坛老将成功击败两位00后新生代棋手,联袂晋级决赛。决赛计划24年5月份在江苏如皋举行。 于12月29日举办的8强赛中,党毅飞胜辜…

设计模式:简单工厂模式

这里写目录标题 工厂模式简介核心角色&#xff1a;实现 工厂模式 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 工厂模式提供了一种将对象的实例化过程封…

短视频账号矩阵系统源码/技术交付3年开发源头

账号矩阵3年技术独立开发打造是一个非常有挑战性和前景的项目。以下是一些建议&#xff0c;帮助你成功打造一个成功的短视频账号矩阵&#xff1a; 1. 确定目标受众&#xff1a;首先需要明确你的目标受众是谁&#xff0c;了解他们的兴趣爱好、年龄、性别等&#xff0c;以便为他们…

航芯ACM32G103开发板评测 02-GPIO输入输出

航芯ACM32G103开发板评测 02-GPIO输入输出 航芯ACM32G103开发板评测 GPIO输入输出应用 软硬件平台 ACM32G103 Board开发板 MDK-ARM Keil GPIO输出典型应用——点灯 GPIO输入典型应用——按键 GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#x…

你对自己的努力满意吗?回复10-100分

有的学生备战高考&#xff0c;或者上班&#xff0c;每天能量满满&#xff0c;战气十足。虽然很累&#xff0c;但是很痛快。有些人今天进步很快&#xff0c;工作休息很辛苦&#xff0c;但是却不累。 有的人一直在抑郁寡欢&#xff0c;有的人信心十足&#xff0c;认定一个目标&am…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-1+2课程介绍+电路系统建模、基尔霍夫定律

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-12课程介绍电路系统建模、基尔霍夫定律 1. 课程介绍2. 电路系统建模、基尔霍夫定律 1. 课程介绍 2. 电路系统建模、基尔霍夫定律 基本元件&#xff1a; 电量 库伦&…

openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作

文章目录 openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作183.1 就地升级和灰度升级操作步骤 openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作 介绍就地升级、灰度升级和滚动升级的详细操作。 183.1 就地升级和灰度升级操作步骤 以root身份登录节点。 …

clickhouseSQL日期相关

1. 毫秒级时间戳转日期/小时 --13位时间戳转具体时间 toDateTime(report_time / 1000) as _c00 -- 获取时间戳对应的时间点整点(结果&#xff1a;%Y-%m-%d %H:00:00.0) eg&#xff1a;2022-09-28 23:00:00.0 toStartOfHour(toDateTime(report_time / 1000)) AS _10-- 获取时间…

C语言数组习题

1.数组遍历 #include <stdio.h>int main(){int i,a[10];for(i0;i<9;i) //对数组元素a[0]~a[9]赋值 a[i]i;for(i9;i>0;i--) //输出a[9]~a[0]共10个数组元素 printf("%d ",a[i]);printf("\n");return 0;} 运行结果&#xff1a; 2.数组应用&a…

计算机毕业设计------经贸车协小程序

项目介绍 本项目分为三种用户类型&#xff0c;分别是租赁者&#xff0c;车主&#xff0c;管理员用户&#xff1b; 管理员用户包含以下功能&#xff1a; 管理员登录,个人中心,租赁者管理,车主管理,赛事活动管理,车类别管理,租车管理,租车订单管理,车辆出售管理,购买订单管理,…