Hello Martin,

This is the exact example which I'm starting from, but this example is used
in a single client thread context.

Therefore, what happens if two threads tries to send() : I suppose that the
second one gets an error because a MessageReceiver is already bound on a
listening port ?
Or is it handled correctly by axis2 and the MessageReceiver is a static
single instance used by the threads ?

I cannot find any answer to this.
Anyway, thanks for your help.

Kind regards,

2011/3/4 Martin Gainty <[email protected]>

>  //client classes declared static obviates multi-threaded activity on client 
> side
>
> //options.setuseSeparateListener(true) will apprise the engine to use 2 
> separate channels
> //one for send and one for receive
> //try this first create a callback object which will receive envelope in 
> onComplete
> class MyCallback extends Callback {
>
>   public void onComplete(AsyncResult result) {
>      // Get the response SOAP envelope from the result.
>      SOAPEnvelope envelope = result.getResponseEnvelope();
>      log.debug("OnComplete has received the envelope from Axis2 Engine 
> envelope="+envelope);
>      // Process SOAP envelope.
>    }
>
>    public void onError(Exception e) {
>      // Write here what you want to do in case of an error.
>     log.debug("AXIS2 Engine has produced an error message="+e.getMessage());
>    }
> }
>
> //client code informs client to use 2 separate channels one for send and for 
> receive
> //with client.setUseSeparateListener(true)
> try {
>   // first create the payload of the message
>   OMElement payload = getPayload(); // add your payload here
>
>   // create an instance of service client
>   ServiceClient serviceClient = new ServiceClient();
>
>   // create an options object to pass parameters to service client
>   Options options = new Options();
>
>   // set EPR of the web service
>   options.setTo(new EndpointReference
>     ("http://www.sample-web-service.com/StockQuote/getQuote";));
>
>   // inform Axis2 engine that you need to use a different channel for the 
> response
>   options.setUseSeparateListener(true);
>
> // Create a callback object which will receive response in onComplete or 
> exception in onError
>   Callback callback = new MyCallback();
>
> //But for the 2 channel approach to work, there
> //  should be a message correlation mechanism. Apache Axis2 uses the 
> WS-Addressing
> //  specification for message correlation so lets engage addressing module 
> here
>   serviceClient.engageModule(Constants.MODULE_ADDRESSING);
>
> //set the options for the client (useSeparateListener)
>   serviceClient.setOptions(options);
>
>   // invoke service apprising callback object when transport has completed 
> (or errored out)
>   serviceClient.sendReceiveNonBlocking(payload, callback);
>
> //use callback.isComplete to determine when the callback has completed 
> processing e.g.
>   while(callback.isComplete()==false) ; //tarry here until the transport has 
> received its envelope
>
> } catch (AxisFault axisFault) {
>   axisFault.printStackTrace();
>  }
>
>
> does this help?
> Martin Gainty
> ______________________________________________
> Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
>
> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
> Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
> dient lediglich dem Austausch von Informationen und entfaltet keine
> rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>
> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le 
> destinataire prévu, nous te demandons avec bonté que pour satisfaire informez 
> l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci 
> est interdite. Ce message sert à l'information seulement et n'aura pas 
> n'importe quel effet légalement obligatoire. Étant donné que les email 
> peuvent facilement être sujets à la manipulation, nous ne pouvons accepter 
> aucune responsabilité pour le contenu fourni.
>
>
>
>
>
>
> ------------------------------
> Date: Fri, 4 Mar 2011 14:54:21 +0100
> Subject: Re: Axis2 client multithreaded asynchronous calls
>
> From: [email protected]
> To: [email protected]
>
> Hello Martin,
>
> Thanks a lot for your help.
>
> My Axis2 client will send an HTTP request to a remote asynchronous SOAP Web
> Service.
>
> Christophe.
>
> 2011/3/4 Martin Gainty <[email protected]>
>
>  which transport will your application be implementing
> (http/smtp/some_other_transport) ?
> if you have seelected http-transport which container will you be
> implementing (TC/GF/WS/WL?)
>
> thanks,
> Martin
> ______________________________________________
> Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
>
> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
> Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
> dient lediglich dem Austausch von Informationen und entfaltet keine
> rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>
> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le 
> destinataire prévu, nous te demandons avec bonté que pour satisfaire informez 
> l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci 
> est interdite. Ce message sert à l'information seulement et n'aura pas 
> n'importe quel effet légalement obligatoire. Étant donné que les email 
> peuvent facilement être sujets à la manipulation, nous ne pouvons accepter 
> aucune responsabilité pour le contenu fourni.
>
>
>
>
>
>
> ------------------------------
> Date: Fri, 4 Mar 2011 14:31:16 +0100
>
> Subject: Axis2 client multithreaded asynchronous calls
> From: [email protected]
>
> To: [email protected]
>
> Hello,
>
> I'm trying to understand how to develop an Axis2 client that uses
> asynchronous nonBlocking calls from a number of client threads.
>
> In the context of a single thread, I suppose that the following method will
> automatically creates a CallbackReceiver ?
>  serviceClient.sendReceiveNonBlocking(payload, callback);
>
> But in the context of many thread, do I need to use a single
> CallbackReceiver for all the threads ? So how can I implement the
> http://www.ibm.com/developerworks/webservices/library/ws-axis2/ in the
> case of multi threads ?
>
> Thank you very much for your help.
>
> Kind regards,
> --
> Christophe Noël
> -------------------------
>
>
>
>
>
> --
> Christophe Noël
> -------------------------
> Please consider the environment before printing this email.
>
>
>
>
> --
> Christophe Noël
> -------------------------
> Please consider the environment before printing this email.
>
>


-- 
Christophe Noël
-------------------------
Please consider the environment before printing this email.

Reply via email to