axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eran Chinthaka (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-1061) sendReceiveNonBlocking fails to send multiple (identical) requests
Date Wed, 23 Aug 2006 11:06:15 GMT
    [ http://issues.apache.org/jira/browse/AXIS2-1061?page=comments#action_12429967 ] 
            
Eran Chinthaka commented on AXIS2-1061:
---------------------------------------

Few comments. 

1. You can not use the same instance of the callback objects to two successive invocations.
Callback should be there until a particular thread finishes. 
2. Make sure your payload is build, before doing mutliple invocations using the *same* payload.
I'd rather clone it.

This is how I got this work. (thx Deepal for giving me the initial code for this)

OMElement payload = creatPayLoad_echo();
        Options options = new Options();
        options.setAction("urn:echo");
        options.setTo(new EndpointReference("http://localhost:8000/axis2/services/EchoService"));

        Callback callback = new Callback() {
            public void onComplete(AsyncResult result) {
                SOAPEnvelope env =
result.getResponseMessageContext().getEnvelope();
                System.out.println("env = " + env);
                finish = true;
            }

            public void onError(Exception e) {
                System.out.println("e = " + e);
                finish = true;
            }
        };

        ServiceClient sender = new ServiceClient();
        sender.setOptions(options);
        sender.sendReceiveNonBlocking(payload, callback);


        Callback callback2 = new Callback() {
            public void onComplete(AsyncResult result) {
                SOAPEnvelope env =
result.getResponseMessageContext().getEnvelope();
                System.out.println("env = " + env);
                finish = true;
            }

            public void onError(Exception e) {
                System.out.println("e = " + e);
                finish = true;
            }
        };
        sender.sendReceiveNonBlocking(payload.cloneOMElement(), callback2);

         while (!callback2.isComplete() || !callback.isComplete()) {

        }


        System.out.println("Done !!");

OUTPUT
=======

env = <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header
/><soapenv:Body><ns:echoResponse xmlns:ns="http://ws.apache.org/axis2/xsd"><ns:return>Hello</ns:return></ns:echoResponse></soapenv:Body></soapenv:Envelope>
env = <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header
/><soapenv:Body><ns:echoResponse xmlns:ns="http://ws.apache.org/axis2/xsd"><ns:return>Hello</ns:return></ns:echoResponse></soapenv:Body></soapenv:Envelope>
Done !!


> sendReceiveNonBlocking fails to send multiple (identical) requests
> ------------------------------------------------------------------
>
>                 Key: AXIS2-1061
>                 URL: http://issues.apache.org/jira/browse/AXIS2-1061
>             Project: Apache Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: client-api
>         Environment: Windows XP sp2, jdk 1.5.03, mac os X 10.4.7, jdk 1.5_06, axis2 17/08/06
>            Reporter: Michele Mazzucco
>            Priority: Critical
>
> The call sendReceiveNonBlocking call fails when multiple, identical messages are sent.
More in detail, the first send succeeds, but the second fails because the message is sent
with an empty SOAP body. A workaround is to interleave two consecutive send operations by
(at least) 600 ms (on my system).
> In other words:
> for (int i = 0; i < execution.requestNum; i++) {
> 	OMElement payload = getTestOMElement();
> 	sender.sendReceiveNonBlocking(payload, callback);
> }
> succeeds, while:
> OMElement payload payload = getTestOMElement();
> for (int i = 0; i < execution.requestNum; i++) {
> 	sender.sendReceiveNonBlocking(payload, callback);
> }
> fails, because (from the second send) the SOAP message is empty

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message