Announcement Announcement Module
Collapse
No announcement yet.
Errors when concurrent accesing a web service Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Errors when concurrent accesing a web service

    I'm experiencing problems when accessing with concurrent threads to a web service inside my Spring based application.

    I'm testing the application with JMeter, with 15 threads and a ramp period of 5 seconds.
    The testing consists of an invocation to different controllers. One of them invokes a Web Service that I'm exposing in my localhost.

    When I run 15 threads, more or less, I usually get some exceptions when invoking the web service like this:

    Code:
    008-02-05 10:21:25,581 DEBUG [org.springframework.remoting.rmi.RmiClientInterceptorUtils] Remote service [{http://www.openuri.org/}notificationProcessWSSoap] threw exception
    AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     faultSubcode: 
     faultString: javax.xml.rpc.JAXRPCException: Number of parameters passed in (8) doesn't match the number of IN/INOUT parameters (14) from the addParameter() calls
     faultActor: 
     faultNode: 
     faultDetail: 
    	{http://xml.apache.org/axis/}stackTrace:javax.xml.rpc.JAXRPCException: Number of parameters passed in (8) doesn't match the number of IN/INOUT parameters (14) from the addParameter() calls
    	at org.apache.axis.client.Call.getParamList(Call.java:2059)
    	at org.apache.axis.client.Call.invoke(Call.java:2364)
    	at org.apache.axis.client.Call.invoke(Call.java:1812)
    	at org.apache.axis.client.AxisClientProxy.invoke(AxisClientProxy.java:163)
    	at $Proxy1.notifyEvent(Unknown Source)
    	at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiClientInterceptorUtils.java:104)
    	at org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.doInvoke(JaxRpcPortClientInterceptor.java:617)
    	at org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.doInvoke(JaxRpcPortClientInterceptor.java:584)
    	at org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.invoke(JaxRpcPortClientInterceptor.java:562)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    	at $Proxy2.notifyEvent(Unknown Source)
    	at org.springframework.web.servlet.mvc.AbstractCommandController.handleRequestInternal(AbstractCommandController.java:84)
    	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    	at sun.reflect.GeneratedMethodAccessor94.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    	at $Proxy3.handleRequest(Unknown Source)
    	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:595)
    
    	{http://xml.apache.org/axis/}hostname:AC011

    Other times I get null pointers, class cast exceptions, and so on.

    I'm profiling Tomcat (my web server) with JProfiler and the process is consuming below 100 Mb of heap space, so I don't understand how could this fail because I don't think 15 threads are a heavy load.

    Any idea?
    Last edited by dancantong; Mar 3rd, 2008, 10:59 AM.

  • #2
    I think I have resolved the problem.

    I found this post that explains it:

    http://forum.springframework.org/arc...p/t-33017.html


    The only thing I've done is overwrite this method in my JaxRpcPortProxyFactoryBean implementation.

    Code:
    protected boolean alwaysUseJaxRpcCall() {
            return true;
    }

    Comment

    Working...
    X