快速业务通道

使用JMeter测试你的EJB - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

使用JMeter测试你的EJB

时间:2011-09-09 ITPUB

对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;   }    }

使用JMeter测试你的EJB(2)

时间:2011-09-09 ITPUB

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拷贝到这个目录中;对于其它应用服务器,则拷贝类似的客 户端jar文件到这个目录。

当你启动JMeter后,你的新取样器(sampler)将会出现在它的Sampler菜单中 ,这样你就可以使用它来测试你的EJB了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号