10.Jmeter 快速入门教程 -- 用Jmeter测试你的EJB
有时候,需要对EJB进行性能基准测试,这对开发非常有帮助. 有很多种方法可以这么做, 当然我们这里介绍Apache's Jmeter 来进行实验测试. 非常不幸的是, Jmeter没有提供一个现成的测试EJB的sampler, 但是我们可以很方便的自己创建一个.
这篇文章,我们用Jboss容器服务来作为ejb服务.
1) 创建一个工厂来查询你的EJB
第一件事情,我们来创建一个简单的一个工厂类用来创建EJB客户段实例.这个实例用来进行测试.
public class MyServiceFactory {
private static final Log log = LogFactory.getLog(MyServiceFactory.class);
private static MyService service;
private static MyServiceFactory me;
private MyServiceFactory() { }
static {
MyServiceFactory.me = new MyServiceFactory();
}
public static MyServiceFactory getInstance() {
return MyServiceFactory.me;
}
public MyService getService() {
if (MyService.service == null) {
// Get the remote interface of the music search service
try {
log.info("Loading the service...");
// JNDI the old-fashioned way:
Context ctx = new InitialContext();
service = (MyService)ctx.lookup("MyAction/remote");
if (service == null) {
log.error("Didn't get the service!");
}
} catch (NamingException e) {
log.error("Error looking up the remote service", e);
return null;
}
}
return service;
}
}
2) 写测试类.
接下来,我们就写测试的主体class. 这个class因为是一个sampler,所以我们要继承jmeter的 org.apache.jmeter.protocol.java.sampler package. 这个抽象类由一个runtest方法,我们需要重写这个方法即可. 除了这个,我们可能还需要重写getDefaultParameters 方法. 这个方法用来提供一些参数值,用来展现在Jmeter's GUI . 就是我们可以通过gui上的输入框等ui空间,将参数传给该class测试类. (package 包位于 \lib\ext\ApacheJMeter_java.jar 和 \lib\ext\ApacheJMeter_core.jar) 需要被引用.
package us.mikedesjardins.demo.jmeter;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class DigitalContentServiceEJBTestSampler extends AbstractJavaSamplerClient {
public SampleResult runTest(JavaSamplerContext context) {
SampleResult results = new SampleResult();
MyService service = MyServiceFactory.getInstance().getService();
results.sampleStart();
Long param1 = context.getLongParameter("PARAM_1");
String param2 = context.getStringParameter("PARAM_2");
MyResult result = service.myMethod(param1, param2);
if (result != null) {
results.setSuccessful(true);
results.setResponseCodeOK();
results.setResponseMessage("'myResult:" + myResult);
} else {
results.setSuccessful(false);
}
results.sampleEnd();
return results;
}
@Override
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
args.addArgument("PARAM_1", "4815162342");
args.addArgument("PARAM_2", "Iculus");
return args;
}
}
2) 设置jmeter
${JMETER_INSTALL_LIB}/lib/ext 是jmeter额外需要的库的文件夹. 里面放的都是需要的第三方的额外库.因为我们进行测试ejb,用刀了ejb client 依赖一些ejb client库,所以我们需要将jbossall-client.jar 放入此文件夹.
将我们自己写的sampler 声称jar包,也放入该目录.
然后重启Jmeter.
3) 启动后, 添加threadGroup, 然后添加java Request Sampler, 然后选择你要进行测试的类名称.
4) 那么你就可以开始测试你的EJBs了.
10.Jmeter 快速入门教程 -- 用Jmeter测试你的EJB的更多相关文章
- 8.Jmeter 快速入门教程 -- 如何使测试脚本更强大
添加基本的elements例如Sampler 或者一些监听器,就可以完成基本的测试.但有时需要更复杂的测试场景,所以还有更多其他的元素.清看下表,了解各种单元组的用途. 可添加的单元组 用途 Sa ...
- 1.Jmeter 快速入门教程(一) - 认识jmeter和google插件
Jmeter是免费开源的性能测试工具( 同时也可以用作功能测试,http协议debug工具 ). 在如今越来越注重知识产权的今天, 公司越来越不愿意冒着巨大的风险去使用盗版的商业性能测试工具. 但如 ...
- Jmeter 快速入门教程(二)--创建简单web测试
[版权所有: whoistester.com & jmeter.cf] http://wenku.baidu.com/linkurl=9zc4VHe6vUUeMdDZPpNsRehkazZFw ...
- 2.Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail
今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) 打开j ...
- 7.Jmeter 快速入门教程--录制复杂web测试脚本
Jmeter的功能简单,不需要有脚本语言的编写经验,纯图形界面添加测试场景, 用起来上手很快.但是如果手动添加每一个web(http/https)请求,费时又费力.而且有可能最后手动编写的和实际发的请 ...
- Jmeter 快速入门教程(三-1) --添加响应断言(即loadrunner中所指的检查点)
[版权所有: whoistester.com & jmeter.cf] 上一节课,我们创建了一个测试场景,并进行了少量vuser的负载测试. 有时候我们执行了测试,但是发现并不是所有事务都执行 ...
- 11.Jmeter 快速入门教程 -- jmeter事务控制器
你肯定知道, jmeter是一个跨系统平台的性能测试工具, 比如他可以在linux,freebsd,windows,solaris 等等各种系统上可以运行. 我可以说, 事务 transaction ...
- Jmeter 快速入门教程(三-3) -- 使用参数化
参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...
- 12.Jmeter 快速入门教程 -- 监控被测资源
写在前面的话, 作者认为jmeter的监控被测服务器资源只是基本可用, 还好习惯了linux的各种命令和工具,所以也基本不用担心什么了.但是有了图形化的监控, 也方便给领导出报告. 怎么说也是不错的. ...
随机推荐
- jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传
jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传 http://www.malsup.com/jquery/form/#getting-started [JQu ...
- BootStrap自定义轮播图播放速度
$('.carousel').carousel({ interval: 3000 });
- python 装饰器 第四步:基本装饰器的实现
#第四步:基本装饰器的实现 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(): #以下三步就是扩展之后的功能,于是我们把这三 ...
- jmeter 线程组之间传递动态变化的变量值
http://www.51testing.com/html/01/n-3725501.html https://www.jianshu.com/p/73832bae65af https://blog. ...
- 二、bootstrap缩略图幅
一.bootstrap缩略图幅
- go语言从例子开始之Example15.闭包
Go 支持通过 闭包来使用 匿名函数.匿名函数在你想定义一个不需要命名的内联函数时是很实用的. 闭包简单理解,函数反回值是一个函数 Example: package main import " ...
- 【Java学习笔记】2015.1.5
1.classpath中的“.”表示当前的路径,所以配置classpath时要注意不能忘了“.”.如果不注意,会出现cmd下运行程序时,.java文件可以编译但是不能运行: 一般的classpath配 ...
- Struts2中Action类的三种写法
一.普通的POJO类(没有继承没有实现)-基本不使用 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创 ...
- 【串线篇】Mybatis入门
MyBatis是持久化层框架(SQL映射框架)-操作数据库 一.环境搭建 1).创建一个java工程,java工程就行: 2). 创建表:自己用工具创建 创建javaBean:Employee(封装表 ...
- sql对表的操作
--insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在) ...