网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JSP > 正文
使用JMeter测试你的EJB
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/30
下载{$ArticleTitle}原创论文样式

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

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

(责任编辑:admin)

  • 下一篇资讯: spring整合activeMq 调试JMS
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号