純 Java 桌面應用,支援壓力測試、效能測量,擴展性強。缺點:無內建通用 EJB Sampler,需自行開發。
public class MyServiceFactory {
private static MyService service;
private static final MyServiceFactory INSTANCE = new MyServiceFactory();
private MyServiceFactory() {}
public static MyServiceFactory getInstance() { return INSTANCE; }
public MyService getService() {
if (service == null) {
Context ctx = new InitialContext();
service = (MyService) ctx.lookup("MyAction/remote"); // JBoss JNDI 名
}
return service;
}
}
public class DigitalContentServiceEJBTestSampler extends AbstractJavaSamplerClient {
@Override
public SampleResult runTest(JavaSamplerContext context) {
SampleResult result = new SampleResult();
MyService svc = MyServiceFactory.getInstance().getService();
result.sampleStart();
Long p1 = context.getLongParameter("PARAM_1");
String p2 = context.getStringParameter("PARAM_2");
MyResult r = svc.myMethod(p1, p2);
if (r != null) {
result.setSuccessful(true);
result.setResponseCodeOK();
result.setResponseMessage("myResult:" + r);
} else {
result.setSuccessful(false);
}
result.sampleEnd();
return result;
}
@Override public Arguments getDefaultParameters() {
Arguments args = new Arguments();
args.addArgument("PARAM_1", "4815162342");
args.addArgument("PARAM_2", "Iculus");
return args;
}
}
jbossall-client.jar)複製到 JMETER_HOME/lib/ext。lib/ext。jmeter.bat,Sampler 選單出現 DigitalContentServiceEJBTestSampler,配置線程組、參數即可壓測。SetupThreadGroup 預熱查找 JNDI,避免首次請求計入響應時間。CSV Data Set Config 實現參數化壓測。Summary Report、Aggregate Graph 分析 TPS、響應時間分佈、錯誤率。幾十行代碼,將 JMeter 變身 EJB 專業壓測利器。