对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拷贝到这个目录中;对于其它应用服务器style="COLOR: #000000" href="http://product.it168.com/files/0402search.shtml" target=_blank>服务器,则拷贝类似的客户端jar文件到这个目录。
当你启动JMeter后,你的新取样器(sampler)将会出现在它的Sampler菜单中,这样你就可以使用它来测试你的EJB了。
分享到:
相关推荐
“使用JMeter测试你的EJB”将教你如何使用JMeter来测试企业级Java组件,如EJBs,以确保它们在大规模并发访问下的性能和可靠性。 4. **JMeter与Ant集成** 文件“软件测试中JMeter和Ant实现自动负载测试”探讨了...
它允许测试者使用JMeter内的JDBC Request来模拟对数据库的查询或更新操作,从而测试数据库的性能和稳定性。 Java Request测试Java类的性能则是通过JMeter的Java Request sampler来实现。它能够模拟对Java类的方法...
在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...
本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...
创建示例 EJB 以测试 jmeter 脚本。 安装说明 下载 jmeter 2.11 用java 7启动jmeter(java 6 ssl证书有问题) 加载您的测试或创建一个新的 添加新的“Java 请求”元素 在 Java 请求中选择“WildflyEJBInvocation”...
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
2. 集成测试:测试EJB3组件与其他服务、数据库或整个应用的交互。JBOSS提供了基于Arquillian的集成测试框架,可以在真实的服务器环境中执行测试,确保组件在实际部署时的正确性。 3. 回归测试:随着开发的进展,对...
这通常涉及到使用性能测试工具(如Apache JMeter或LoadRunner)来生成负载,然后分析结果以调整bean配置或优化业务逻辑。 总的来说,理解有状态和无状态EJB的区别对于设计和实现高效的企业级应用至关重要。开发者...
EJB(Enterprise JavaBeans)测试框架如Arquillian可以用来测试EJB组件,而Selenium则用于前端Web界面的自动化测试。同时,Postman等工具可用于API接口的测试。 4. **验收测试**(也称为用户验收测试或UAT):这是...
例如,使用Selenium进行Web界面的功能测试,JMeter进行性能压力测试,AppScan进行安全性扫描。 4. **持续集成与自动化测试**:CI/CD(持续集成/持续部署)流程强调频繁集成和自动化测试,以快速发现并修复问题。...
例如LoadRunner、JMeter、WebLoad等都是常用的性能测试工具。这些工具能够模拟多用户并发访问,自动记录性能数据,从而帮助测试人员分析系统性能。 4. 基准测试:基准测试(Benchmarking)是通过与同行业标准或历史...
- **Cactus**:Cactus是一个用于Java应用的单元测试工具,特别适用于测试EJB。 - **JMeter**:JMeter是一个负载测试工具,用于评估Web应用的性能。 - **Concurrent Versions System (CVS)**:CVS是一个早期的版本...
8. 软件测试工具知识:软件测试工具是软件测试中的一个重要组件,Java 软件测试工程师需要具备软件测试工具的知识,包括 JMeter、Selenium 等。 9. Java design pattern 知识:Java 设计模式是 Java 软件开发中的一...
10. **性能测试**:使用工具如JMeter或LoadRunner,模拟大量并发用户,测试Web应用的性能瓶颈和稳定性。 这份笔试题可能涵盖以上多个方面,考生需要具备扎实的Java基础,熟悉Web开发流程,理解服务器端和客户端的...
- 性能测试工具:如LoadRunner或JMeter等,用于模拟用户行为并对系统进行压力测试。 - 集成测试工具:可以使用自动化测试工具如Selenium进行自动化集成测试。 - 安全测试工具:例如OWASP ZAP等工具用于安全漏洞...
使用JUnit、JProbe和JMeter测试、调试和优化WebLogic应用程序。 利用XML.Web服务,jCOM、JCo、CORBA和Tuxedo应用程序.将WebLogic集成到企业系统中。 管理WebLogic应用程序和使用群集服务。 使用WebLogic ...
4. **性能测试**:评估系统的负载承受能力和响应时间,比如使用Apache JMeter进行压力测试。 5. **安全性测试**:检查应用的安全漏洞和潜在风险,包括SQL注入、XSS攻击等,可以使用OWASP ZAP等工具进行。 6. **...
它整合了JSF、EJB、CDI、Hibernate等技术,为开发者提供了一种更高效、更灵活的开发方式。性能测试是确保Seam应用能够高效运行的关键环节。以下是一些提高Seam系统性能测试点的详细说明: 1. **性能指标监控**: -...
10. **性能和压力测试**:使用工具如Apache JMeter对Weblogic进行性能和压力测试,评估系统的稳定性和可扩展性。 最后,理解Weblogic的生命周期管理,包括启动、停止、重启和更新应用,以及如何通过命令行工具和...