Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-2445

Concurrency problem in Axis using JAX-RPC

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 1.2.1
    • 1.4.1
    • Basic Architecture
    • None
    • Axis 1.2.1
      Spring 1.2.7
      JDK 1.4.2
      Oracle AS 10.1.2 or Tomcat 4.1

    Description

      On the client side there is a threading problem because paramaters from two user requests are being added to the same parameter list. I'm using the Spring JaxRpcPortClientInterceptor which does the following:

      Call call = service.createCall(portQName, invocation.getMethod().getName());
      ...
      try {
      return call.invoke(invocation.getArguments());
      }
      ...

      Axis keeps an instance of the created Call on the Service. Have a look at
      org.apache.axis.client.Service.createCall(). It updates the instance variable "_call" with a new instance on every call. Furthermore, Call has the Service as an instance variable as well. This is passed into the Call constructor, and Call uses the service in the method Call.invokeEngine(...). This is un-thread-safe and probably the reason for the parameters on Call getting messed up.

      Stack trace:
      org.springframework.remoting.RemoteAccessException: Cannot access remote service [

      {http://webservice.impl.enrolment.service.maa.agr.gc.ca}

      SpringMAAEnrolmentServiceEndPoint]; nested exception is org.apache.axis.AxisFault: ; nested exception is:
      javax.xml.rpc.JAXRPCException: Number of parameters passed in (6) doesn't match the number of IN/INOUT parameters (11) from the addParameter() calls
      AxisFault
      faultCode:

      {http://schemas.xmlsoap.org/soap/envelope/}

      Server.userException
      faultSubcode:
      faultString: javax.xml.rpc.JAXRPCException: Number of parameters passed in (6) doesn't match the number of IN/INOUT parameters (11) from the addParameter() calls
      faultActor:
      faultNode:
      faultDetail:

      {http://xml.apache.org/axis/}

      stackTrace:javax.xml.rpc.JAXRPCException: Number of parameters passed in (6) doesn't match the number of IN/INOUT parameters (11) from the addParameter() calls
      at org.apache.axis.client.Call.getParamList(Call.java:2042)
      at org.apache.axis.client.Call.invoke(Call.java:2345)
      at org.apache.axis.client.Call.invoke(Call.java:1804)

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              prohne Peter Rohne
              Votes:
              1 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: