对EJB进行一些性能基准测试是非常有必要和有帮助的,测试的方法和工具有很多,不过我最近发现,Apache JMeter是进行基准测试的一个优秀工具。可惜的是,JMeter没有提供一个可测试任意EJB的通用取样器(sampler),不过,我们可以自己动手来创建一个。
首先,让我们简单的了解一下Apache JMeter,它是一个100%的纯Java桌面应用,可用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其他测试领域。
在本篇文章中,我使用JBoss应用服务器来运行我的EJB。使用其它容器的实现过程应该也非常类似。
1、首先为EJB创建一个工厂(factory)类
我们需要做的第一件事情是,创建一个简单的Singleton factory class,以为你的测试创建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) {
try {
log.info("Loading the service...");
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、编写测试代码
接下来我们需要自己编写测试代码,为了实现这个目的,我们可以对JMeter的org.apache.jmeter.protocol.java.sampler包中的AbstractJavaSamplerClient类进行扩展。这个抽象类具有一个runTest方法,我们需要对其进行重写(override),使用这个方法来实现实际的测试。另外,我们还将重写getDefaultParameters方法,以使其提供某些合理的默认值,它们将在JMeter图形应用界面中显示。
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;
}
}
3、运行JMeter
JMeter的扩展lib目录是${JMETER_INSTALL_LIB}/lib/ext。你需要把所有EJB客户端所需要的jar文件拷贝到这个目录中。如果你使用的是JBoss,则需要把jbossall-client.jar拷贝到这个目录中;对于其它应用服务器style="COLOR: #000000" href="http://product.it168.com/files/0402search.shtml" target=_blank>服务器,则拷贝类似的客户端jar文件到这个目录。
当你启动JMeter后,你的新取样器(sampler)将会出现在它的Sampler菜单中,这样你就可以使用它来测试你的EJB了。
分享到:
相关推荐
使用JMeter测试Web应用使用JMeter测试Web应用使用JMeter测试Web应用
使用Jmeter测试Oracle,如何配置Jmeter测试计划,进行Oracle连接数测试
使用jmeter进行接口测试的一个简单例子——web系统登录接口测试。初学jmeter的童鞋可以看看
使用jmeter测试java请求,博客地址http://blog.csdn.net/qq_34021712/article/details/78870407
使用JMeter测试oracle数据库,主要是压力测试。
Jmeter测试实验报告.docxJmeter测试实验报告.docxJmeter测试实验报告.docxJmeter测试实验报告.docxJmeter测试实验报告.docxJmeter测试实验报告.docxJmeter测试实验报告.docxJmeter测试实验报告.docx
jmeter测试工具使用资料。包含使用jmeter进行web.oracle.tomcat测试的使用和结果参数的介绍
jmeter是一种测试工具,文档是一个使用jmeter测试数据库的简单例子
jmeter测试Rabbitmq的方法 AMQP Publisher/Consumer 请求 介绍 Exchange(交换机):如果此处不填写,使用默认名称--(AMQP default) Exchange Type:分别是direct(单播),fanout(广播),topic(组播),headers,每种类型...
使用JMeter进行性能测试
JMeter教程文档PDF,JMeter,Apache JMeter,测试,自动化测试,开源免费,jmeter。。。。
jmeter4.0进行微信小程序测试(jmeter性能测试教程) jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书
jmeter测试用例,jmeter测试用例,jmeter测试用例,jmeter测试用例,
性能测试的基本原理和方法 jmeter测试工具使用方法 性能测试的分析方法
Jmeter性能测试报告模板
jmeter-压力测试报告-超细,Jmeter性能测试工具使用总结
如果想用Jmeter测试Socket的,可以下载该插件包,然后放到Jmeter的lib/ext目录下,就可以在sampler上新增socket sample了。
Apache JMeter测试示例脚本
JMETER 测试webservice 接口文档,内附JMETER3.0 安装包
jmeter 调用dubbo服务,jmeter测试笔记,jmeter测试tcp服务,beanshell练习等等。