有时候,需要对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的更多相关文章

  1. 8.Jmeter 快速入门教程 -- 如何使测试脚本更强大

    添加基本的elements例如Sampler 或者一些监听器,就可以完成基本的测试.但有时需要更复杂的测试场景,所以还有更多其他的元素.清看下表,了解各种单元组的用途.  可添加的单元组  用途 Sa ...

  2. 1.Jmeter 快速入门教程(一) - 认识jmeter和google插件

    Jmeter是免费开源的性能测试工具( 同时也可以用作功能测试,http协议debug工具 ).  在如今越来越注重知识产权的今天, 公司越来越不愿意冒着巨大的风险去使用盗版的商业性能测试工具. 但如 ...

  3. Jmeter 快速入门教程(二)--创建简单web测试

    [版权所有: whoistester.com & jmeter.cf] http://wenku.baidu.com/linkurl=9zc4VHe6vUUeMdDZPpNsRehkazZFw ...

  4. 2.Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail

    今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) 打开j ...

  5. 7.Jmeter 快速入门教程--录制复杂web测试脚本

    Jmeter的功能简单,不需要有脚本语言的编写经验,纯图形界面添加测试场景, 用起来上手很快.但是如果手动添加每一个web(http/https)请求,费时又费力.而且有可能最后手动编写的和实际发的请 ...

  6. Jmeter 快速入门教程(三-1) --添加响应断言(即loadrunner中所指的检查点)

    [版权所有: whoistester.com & jmeter.cf] 上一节课,我们创建了一个测试场景,并进行了少量vuser的负载测试. 有时候我们执行了测试,但是发现并不是所有事务都执行 ...

  7. 11.Jmeter 快速入门教程 -- jmeter事务控制器

    你肯定知道, jmeter是一个跨系统平台的性能测试工具, 比如他可以在linux,freebsd,windows,solaris 等等各种系统上可以运行. 我可以说, 事务 transaction ...

  8. Jmeter 快速入门教程(三-3) -- 使用参数化

    参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...

  9. 12.Jmeter 快速入门教程 -- 监控被测资源

    写在前面的话, 作者认为jmeter的监控被测服务器资源只是基本可用, 还好习惯了linux的各种命令和工具,所以也基本不用担心什么了.但是有了图形化的监控, 也方便给领导出报告. 怎么说也是不错的. ...

随机推荐

  1. 百度网盘不限速-Motrix

    目录: Windows 下使用  Motrix Mac 下使用 BaiduNetdiskPlugin-macOS Mac 下使用 Motrix Windows 系统  Motrix 1. Google ...

  2. Springboot01-web

    Springboot快速构建 访问http://start.spring.io 构建springboot项目,这里选择版本2.0.4 单击Generate Project按钮下载springboot ...

  3. Linux查看软件安装路径,和文件的位置

    查看软件是否安装:rpm -qa|grep xx 列出软件安装包安装的文件:rpm -ql 直接使用rpm -qal |grep mysql 查看mysql所有安装包的文件存储位置 通过find去查找 ...

  4. javascript 计算两个整数的百分比值

    ///计算两个整数的百分比值 function GetPercent(num, total) { num = parseFloat(num); total = parseFloat(total); i ...

  5. easyUI学习笔记二

    1.  拖拉大小 <!DOCTYPE html> <html> <head> <title>easyui学习</title> <scr ...

  6. laravel打印查询的sql

    public function __construct( ){ $log = DB :: listen( function( $sql ){ echo $sql; } ); }

  7. leetcode-350- 两个数组的交集 II

    问题: package com.example.demo; import java.util.ArrayList; import java.util.Arrays; import java.util. ...

  8. OKVIS框架之前端

    1. 数据流入 在okvis_app_sychronous.cpp内,把IMU和图像数据加入到各自的队列里.由ThreadedKFVio负责队列的各种操作.作者对队列加了特殊功能,保证队列是线程安全的 ...

  9. Vue内敛模板

    在学习<Vue实战>一书时,学习到组件高级应用-内联模板这一小节时,照着书上的例子敲了一遍,发现未达到预期,切报错. 书上源代码如下: <!DOCTYPE html> < ...

  10. JavaScript 下载大文件解决方案(Blob+OjbectURL)

    结合Blob和OjbectURL实现更大的文件下载: var a = document.createElement('a'); var txt = '.....content....'; for(va ...