You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "João Conceição (JIRA)" <ji...@apache.org> on 2011/07/29 19:18:09 UTC
[jira] [Closed] (AXIS2-5097) Axis2 problem with concurrent requests
mismatch response object
[ https://issues.apache.org/jira/browse/AXIS2-5097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
João Conceição closed AXIS2-5097.
---------------------------------
Resolution: Not A Problem
The problem can be solved by setting one RPCMessageReceiver for each method on file services.xml
> Axis2 problem with concurrent requests mismatch response object
> ---------------------------------------------------------------
>
> Key: AXIS2-5097
> URL: https://issues.apache.org/jira/browse/AXIS2-5097
> Project: Axis2
> Issue Type: Bug
> Components: databinding
> Affects Versions: 1.2, 1.6.0
> Environment: Tomcat 5.5.25 for the application server
> Axis2 1.2 or 1.6 for the Web Service
> Java version 1.5.0_11
> Reporter: João Conceição
> Priority: Critical
> Labels: Axis2, Java
>
> I'm facing a problem on my production server for a Web Service with concurrent requests.
> The problem is that when the Web Service receives (for instance) two requests for two different methods (each method returning a different object) in the same service, the Web Service will return the object type of the second request.
> To replicate and simplify the problem I create a simple Web Service with only one service and two methods with the same environment of the production server.
> RequestMethods.class:
> package test;
> import beans.Request1Response;
> import beans.Request2Response;
> public class RequestMethods {
> public Request1Response request1() {
> Request1Response output = new Request1Response();
> try {
> Thread.sleep(10 * 1000);
> } catch (InterruptedException e) {
> e.printStackTrace();
> }
> output.setError_code(1);
> output.setError_msg("message1");
> return output;
> }
> public Request2Response request2() {
> Request2Response output = new Request2Response();
> output.setError_code(2);
> output.setError_msg("message2");
> return output;
> }
> }
> services.xml:
> <service name="RequestMethods">
> <Description>
> Concurrent Requests test
> </Description>
> <messageReceivers>
> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
> </messageReceivers>
> <parameter name="ServiceClass" locked="false">test.RequestMethods</parameter>
> </service>
> I've made a request for request1 and before this one returns, made another request for request2.
> The result for request1 (the first request but the second obtained response because of the sleep of 10 seconds) was:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Body>
> <ns:request2Response xmlns:ns="http://test/xsd">
> <ns:return>
> <error_code xmlns="http://beans/xsd">1</error_code>
> <error_msg xmlns="http://beans/xsd">message1</error_msg>
> </ns:return>
> </ns:request2Response>
> </soapenv:Body>
> </soapenv:Envelope>
> The result for request2 (the second request but the first obtained response) was:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Body>
> <ns:request2Response xmlns:ns="http://test/xsd">
> <ns:return>
> <error_code xmlns="http://beans/xsd">2</error_code>
> <error_msg xmlns="http://beans/xsd">message2</error_msg>
> </ns:return>
> </ns:request2Response>
> </soapenv:Body>
> </soapenv:Envelope>
> As you can see above, the response for request1 it should be of type request1Response but it's from request2Response instead.
> Regards,
> João Conceição
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org