首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

用 JMeter 壓測 EJB:自定義 Sampler 實戰教程

     編輯:Java 相關知識

為什麼選 JMeter

純 Java 桌面應用,支援壓力測試、效能測量,擴展性強。缺點:無內建通用 EJB Sampler,需自行開發。

三步走

1. EJB 工廠單例(緩存 Remote Stub)

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;
    }
}

2. 繼承 AbstractJavaSamplerClient 寫測試邏輯

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;
    }
}

3. 部署與運行

  • 將 EJB Client 依賴 JAR(JBoss: jbossall-client.jar)複製到 JMETER_HOME/lib/ext。
  • 編譯 Sampler 類打包 JAR 同樣放入 lib/ext。
  • 啟動 jmeter.bat,Sampler 選單出現 DigitalContentServiceEJBTestSampler,配置線程組、參數即可壓測。

進階提示

  • 用 SetupThreadGroup 預熱查找 JNDI,避免首次請求計入響應時間。
  • 結合 CSV Data Set Config 實現參數化壓測。
  • 監聽器 Summary Report、Aggregate Graph 分析 TPS、響應時間分佈、錯誤率。

幾十行代碼,將 JMeter 變身 EJB 專業壓測利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved