Hi Deepal,

how is it possible to solve this issue if the method is not void?, I
mean, given the nodes

client --> A --> B
   <------------

if the ws method is defined in A and it is not void, does your solution
work?


ServiceA {

        OMElement foo(OMElement argument) {
                process the request, change headers, etc.

                sender.fireAndForget(payload);
                
                and now what happens?, what value should I return?
}


ServiceB {

        // used to receive the request from 'A'
        // (the method has the same signature as the one defined in ServiceA)
        OMElement foo(OMElement argument) {
                satisfies the request
                ...
                sends the result to 'client'
        }
}



Thanks,
Michele

Deepal Jayasinghe wrote:
> When B gets a message he has a corresponding  messageContext for that
> message , and that message context will have all the required addressing
> information. So what you have to do is , create a new message context by
> coping the stuff that you need. Btw are you going to just forward the
> SOAP message or going to modify that ?
> 
> In either case , Create a new message context , and copy the SOAP
> envelope  to it , and set the wsa:To (to erp) in the new message context
> , then create an operation client , finlay send the message using
> OperationClient. In simple term your scenario boils down as follows;
>   A send a request to B , so A is the client B is the server ,
> next B send a rer to N , so B become the client and N become the server ,
> so simply think B as a client :)
> 
> Michele Mazzucco wrote:
> 
>> Hi Deepal,
>>
>> I've got just a question after your explanation: how can B forward the
>> message to node N? I mean, which header should B modify/set to obtain
>> that result (please note also that several N nodes can exist, but only B
>> is aware of that)?
>>
>>
>> Thanks in advance,
>> Michele
>>
>> Deepal Jayasinghe wrote:
>>  
>>
>>> Hi Michele ;
>>>
>>> I am sorry for late reply.
>>> pls see my in line comments
>>>
>>> Michele Mazzucco wrote:
>>>
>>>    
>>>
>>>> Hi all,
>>>>
>>>> I would like to use the callback features, but my architecture uses a
>>>> piece of software acting like a "broker" to handle incoming requests:
>>>>
>>>>
>>>>      A              B
>>>> Client ----------> Broker ---------> Node satisfying the request (N)
>>>> |                     |
>>>> |                             |
>>>> |          C (reply)         |
>>>> <---------------------------------------
>>>>
>>>>
>>>> Can the node N use the callback to return the result to the client?
>>>>      
>>>>
>>> yes it can , but as I understood without using callback you can achieve
>>> the same goal,  correct me if im wrong
>>>  step1:
>>>    A send a request to B by putting address of B as TO and Address of A
>>> as ReplyTo , and invocation of the A should be sendReceiveNonBlocking
>>>
>>>  strp 2 :
>>>   When B gets the req and it does whatever processing and forward that
>>> to Node N and that invocation can be  fireAndForget invocation (B will
>>> not change replyTo address)
>>>  step 3:
>>>   Once N get the request it will process the message and send the
>>> response to A since message has replyTo address.
>>>   (if the invocation at the N takes long time , then you can use
>>> AsyncMessageReciver , which uses call back inside that)
>>>
>>>    
>>>
>>>> If no, what should I do? Could fireAndForget() messages (A, B and C)
>>>> be fine (in case together with options like relatesTo, messageId, etc.)?
>>>>      
>>>>
>>> If A is client running inside a Server then you can just call
>>> fireAndForget at A , by putting replyTo addresses as server address.
>>>
>>>    
>>>
>>>> Any suggestions are welcome.
>>>>
>>>>
>>>>
>>>> Thanks in advance,
>>>> Michele
>>>>
>>>>
>>>>      
>>>>
>>
>>  
>>
> 

Reply via email to