Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Duplicate
-
1.2.1
-
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 [
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:
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:
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
- is duplicated by
-
AXIS-2850 org.apache.axis.client.Service method createCall() may return same Call to simultaneous calls.
- Resolved