[
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]