MLDN
课程咨询[孔老师]QQ 1031143579孔老师QQ课程咨询留言 课程咨询[徐老师 ]QQ 945313230
徐老师QQ课程咨询留言
课程咨询[刘老师 ]QQ 514543793
刘老师QQ课程咨询留言
java培训
北京java培训
IT电子教育门户 高端JAVA培训 -=> 资源中心 -=> J2EE技术专区 -=> EJBs -=> 正文

使用JMeter测试你的EJB

 发布日期:2009-1-16 9:53:00 发布者:[IT电子教育门户]   评论:[]  浏览:

对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了。

java视频教程
JAVA核心_75对象序列化练习
 JAVA核心_75对象序列化..
JAVA核心_74对象序列化
 JAVA核心_74对象序列化..
JAVA核心_73字符编码
 JAVA核心_73字符编码 ..
JAVA核心_72Scanner
 JAVA核心_72Scann..
JAVA核心_71 IO练习 二
 JAVA核心_71 IO练习..
相关文章 推荐文章
Eclipse Ant开发EJB..[11.28]
消息驱动的EJB[10.24]
EJB 3.0 的新规范[9.10]
EJB3.0学习之运行环境配置[9.6]
发扬EJB,Spring思想将组..[6.1]
使用JMeter测试你的EJB
Eclipse Ant开发EJB的三个..
CMP实体bean实战开发
消息驱动的EJB
EJB 3.0 的新规范
热门文章
无状态Enterprise JavaB..
EJB初学者常有的十一个疑惑
消息驱动bean
EJBCA 3.0初探
EJB入门文章
从零开始到您如何成为EJB专家
发扬EJB,Spring思想将组件化进..
EJB 3.0 开发指南之依赖值对象
关于EJB返回值的解决方案
EJB的困惑:组件与可重用性的矛盾
今日更新
使用JMeter测试你的EJB
Eclipse Ant开发EJB的三个..
利用依赖值对象设计粗粒度BMP
CMP实体bean实战开发
消息驱动的EJB
EJB 3.0 的新规范
EJB3.0学习之运行环境配置
如何开发、调试和测试EJB3 APP?..
发扬EJB,Spring思想将组件化进..
JBoss下的EJB3开发无状态会话B..
JAVA招聘网
 评一评
正在读取…
  姓名:
  评论:
    
【注】 发表评论必需遵守以下条例: !!!
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 QQ留言
Copyright 2009 魔乐培训MLDN.CN all rights reserved 版权所有 京ICP备07008611号