-
Bug
-
Resolution: Done
-
Major
-
7.1.0.Final
-
None
I've created a sampler for JMeter for load testing application. When I ran that with say around 30 threads with rampup time 80 seconds, after a while I kept getting exception specified in https://community.jboss.org/thread/195709?tstart=0. I later tried to close InitialContext in teardown methods, but wasn't really helpful. I looked at no. of InitialContext intances present in the VM using visualvm heapdump & found that just before throwing exception, it was 24 & after throwing exception for all threads, it did reach to 30, but it wasn't useful..
Please note that, I'm creating InitialContext with passing following parameters to it:
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://localhost:4447
jboss.naming.client.ejb.context=true
Here is the code for Java Sampler
package com; 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; import com.banctec.caseware.client.api.API; import com.banctec.caseware.client.api.RemoteClientAPI; import com.banctec.caseware.resources.CaseResource; import com.banctec.caseware.resources.LoginResource; import com.banctec.caseware.resources.Resource; public class EJBTest extends AbstractJavaSamplerClient { private API api = null; private Long typeId; private int setupTestCalled = 0; private int teardownTestCalled = 0; private int runTestCalled = 0; public Arguments getDefaultParameters() { Arguments defaultParameters = new Arguments(); defaultParameters.addArgument("typeId", "1"); defaultParameters.addArgument("RunLoop", "200"); defaultParameters.addArgument("username", "abc"); defaultParameters.addArgument("password", "abc"); return defaultParameters; } public void setupTest(JavaSamplerContext context) { try { typeId = context.getLongParameter("typeId"); api = new RemoteClientAPI();//this is where InitialContext gets created LoginResource loginResource = new LoginResource(context.getParameter("username"), context.getParameter("password")); loginResource.setUseDefaultRole(Boolean.valueOf(true)); api.login(new Resource[] { loginResource }); }catch (Exception e) { e.printStackTrace(); } System.out.println(" Number of times setupTest called "+(++setupTestCalled)); } public void teardownTest(JavaSamplerContext context) { try{ if (api != null) { api.logout();//In this method InitialContext.close() get's called } }catch (Exception e) { e.printStackTrace(); } System.out.println(" Number of times teardownTest called "+(++teardownTestCalled)); } public SampleResult runTest(JavaSamplerContext context) { SampleResult result = new SampleResult(); boolean success = true; int loopCount = context.getIntParameter("RunLoop"); result.sampleStart(); //Here goes the code that will call few business methods on remote EJB's in application // I've purposely removed this bit here.. System.out.println(" Number of times runTest called "+(++runTestCalled)); result.sampleEnd(); result.setSuccessful(success); return result; } }
- is blocked by
-
REM3-144 MAX_OUTBOUND_CHANNELS and MAX_INBOUND_CHANNELS options not honoured while opening channel
- Resolved