程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用JMeter測試你的EJB

使用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了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved