作业帮 > JAVA > 教育资讯

Java教程:使用JMeter测试你的EJB

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 04:41:00 JAVA
Java教程:使用JMeter测试你的EJB
Java教程:使用JMeter测试你的EJBJAVA
【51Test.NET-Java教程:使用JMeter测试你的EJB】:

对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 extendsAbstractJavaSamplerClient {

  
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/files/0402search.shtml" target=_blank>服务器,则拷贝类似的客户端jar文件到这个目录。

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

JAVA