`
yangzb
  • 浏览: 3481897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用JMeter测试你的EJB

    博客分类:
  • Java
阅读更多

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

分享到:
评论

相关推荐

    JMeter 使用入门

    “使用JMeter测试你的EJB”将教你如何使用JMeter来测试企业级Java组件,如EJBs,以确保它们在大规模并发访问下的性能和可靠性。 4. **JMeter与Ant集成** 文件“软件测试中JMeter和Ant实现自动负载测试”探讨了...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试4

    在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试2

    本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...

    jmeter-wildfly-ejb-java-request:jmeter jboss wildfly ejb java请求

    创建示例 EJB 以测试 jmeter 脚本。 安装说明 下载 jmeter 2.11 用java 7启动jmeter(java 6 ssl证书有问题) 加载您的测试或创建一个新的 添加新的“Java 请求”元素 在 Java 请求中选择“WildflyEJBInvocation”...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3

    本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...

    JBOSS6.0.0M4发布EJB3测试

    2. 集成测试:测试EJB3组件与其他服务、数据库或整个应用的交互。JBOSS提供了基于Arquillian的集成测试框架,可以在真实的服务器环境中执行测试,确保组件在实际部署时的正确性。 3. 回归测试:随着开发的进展,对...

    有状态和无状态EJB之间的差异;

    这通常涉及到使用性能测试工具(如Apache JMeter或LoadRunner)来生成负载,然后分析结果以调整bean配置或优化业务逻辑。 总的来说,理解有状态和无状态EJB的区别对于设计和实现高效的企业级应用至关重要。开发者...

    软件测试技术在J2EE项目中的应用

    EJB(Enterprise JavaBeans)测试框架如Arquillian可以用来测试EJB组件,而Selenium则用于前端Web界面的自动化测试。同时,Postman等工具可用于API接口的测试。 4. **验收测试**(也称为用户验收测试或UAT):这是...

    J2EE企业级应用测试实践

    例如,使用Selenium进行Web界面的功能测试,JMeter进行性能压力测试,AppScan进行安全性扫描。 4. **持续集成与自动化测试**:CI/CD(持续集成/持续部署)流程强调频繁集成和自动化测试,以快速发现并修复问题。...

    java软件测试工程师个人简历范文.pdf

    8. 软件测试工具知识:软件测试工具是软件测试中的一个重要组件,Java 软件测试工程师需要具备软件测试工具的知识,包括 JMeter、Selenium 等。 9. Java design pattern 知识:Java 设计模式是 Java 软件开发中的一...

    java Web测试笔试.zip

    10. **性能测试**:使用工具如JMeter或LoadRunner,模拟大量并发用户,测试Web应用的性能瓶颈和稳定性。 这份笔试题可能涵盖以上多个方面,考生需要具备扎实的Java基础,熟悉Web开发流程,理解服务器端和客户端的...

    BEA WebLogic Server8.1大全 源码

     使用JUnit、JProbe和JMeter测试、调试和优化WebLogic应用程序。  利用XML.Web服务,jCOM、JCo、CORBA和Tuxedo应用程序.将WebLogic集成到企业系统中。  管理WebLogic应用程序和使用群集服务。  使用WebLogic ...

    javaEE以及测试相关的学习视频

    4. **性能测试**:评估系统的负载承受能力和响应时间,比如使用Apache JMeter进行压力测试。 5. **安全性测试**:检查应用的安全漏洞和潜在风险,包括SQL注入、XSS攻击等,可以使用OWASP ZAP等工具进行。 6. **...

    提高Seam系统性能测试点

    它整合了JSF、EJB、CDI、Hibernate等技术,为开发者提供了一种更高效、更灵活的开发方式。性能测试是确保Seam应用能够高效运行的关键环节。以下是一些提高Seam系统性能测试点的详细说明: 1. **性能指标监控**: -...

    测试问题所在的程序

    10. **性能和压力测试**:使用工具如Apache JMeter对Weblogic进行性能和压力测试,评估系统的稳定性和可扩展性。 最后,理解Weblogic的生命周期管理,包括启动、停止、重启和更新应用,以及如何通过命令行工具和...

    EJBUtilities_java_

    在"Prueba carga ejb de pall"的场景下,可能是测试EJB的加载速度、容量或者在高并发情况下的性能。这可能涉及到对EJB容器(如TomEE, WildFly, GlassFish等)的理解,以及如何配置和优化这些容器以达到最佳性能。 ...

    基于J2EE的JSP电信计费系统

    JUnit和Mockito等工具可用于单元测试,而JMeter可以进行性能测试。 10. **版本控制与协作**:项目开发通常使用Git进行版本控制,便于团队协作和代码管理。 综上所述,基于J2EE的JSP电信计费系统涵盖了Web开发的多...

    各公司的J2EE面试题 其实很基础

    12. **测试框架**:JUnit、Mockito等单元测试框架,以及Selenium、JMeter等集成测试和性能测试工具的使用,是衡量开发者专业性的标准之一。 在准备这些面试题时,不仅要理解理论知识,还要能够结合实际案例来阐述和...

    IBM J2EE培训资料

    J2EE应用的测试包括单元测试、集成测试和系统测试,使用JUnit、JMeter等工具进行。调试方面,IBM提供了强大的WebSphere Application Server诊断工具。 9. **持续集成与自动化** 使用持续集成工具(如Jenkins、...

Global site tag (gtag.js) - Google Analytics