Designing the process asynchronously would avoid the problem. Unfortunately the 
WebService called synchronously is specified by a business partner. The state 
returned effects the client initiating the call. After this synchronous part 
the process already defines asynchronous communication with said business 
partner - which fails after the process is in the inconsistent state.

I was hoping to find a solution using synchronous communication reliably.

Any suggestions?

Thanks,

Uwe


-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]] 
Im Auftrag von Jean-Claude Moissinac
Gesendet: Dienstag, 17. Mai 2011 21:52
An: user
Betreff: Re: How to handle a timeout provoked by a long-running Invoke activity

Asynchronicity seems to be the concept
Is it possible with ODE to have the following behavior:
the process returns quickly and another call is there to get a state
of the result and to get the result if it is ready

On Tue, May 17, 2011 at 2:36 PM, Uwe Bachmann <[email protected]> wrote:
> Rafal,
>
> thank you for your reply.
>
> I would rather not increase the timeout. First, the client should not have to 
> wait too long and get an error after an adequate time. Second, it would not 
> avoid the inconsistency between the state of the caller and the BPEL process 
> instance, just make it less likely to hit the timeout.
>
> I tried to set exitOnStandardFault to "yes" as you suggested. No change in 
> behavior. It looks like neither a failure nor a fault is raised in this 
> scenario.
>
> Maybe there are some other options?
>
> Thanks,
>
> Uwe
>
> -----Ursprüngliche Nachricht-----
> Von: Rafal [mailto:[email protected]]
> Gesendet: Dienstag, 17. Mai 2011 14:13
> An: [email protected]
> Betreff: Re: How to handle a timeout provoked by a long-running Invoke 
> activity
>
> Hi Uwe
>
> 1. To increase timeout for response you need to set property 
> mex.timeout=300000.
> You can find more information on
> http://ode.apache.org/endpoint-configuration.html.
> 2. Try set attribute exitOnStandardFault="yes" in process node
>    <bpel:process name="xxxx"
>         targetNamespace="xxx"
>         xmlns:tns="xxx"
>         xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable";
>         expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
>         queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
>         exitOnStandardFault="yes"
>         >
>
> Rafal
>
>
>
> On Tue, May 17, 2011 at 1:09 PM, Uwe Bachmann <[email protected]> wrote:
>> Hi,
>>
>> while browsing for timeout handling in ODE I did not find a solution for the 
>> following case.
>>
>> Take a sequence: Receive - Assign - Invoke - Assign - Reply
>>
>> The Invoke returns a response that is used to prepare the reply variable. 
>> Assume everything is up and running and responding properly. A timeout of 60 
>> seconds is configured for the sequence to return to the calling WebService.
>> What if the Invoke activity takes longer to process than 60 seconds?
>> The timeout of the sequence hits and the caller is getting informed of the 
>> timeout by a SOAP fault.
>>
>> When I simulated this case by delaying the Invoke response inside the called 
>> WebService method I found the following situation:
>> - After the Invoke finally returns the second Assign reads an empty variable 
>> and prepares the variable for the Reply. The Reply is executed seemingly 
>> successful.
>> - In the log output an exception in 
>> org.apache.servicemix.http.processors.ConsumerProcessor.process (HTTP 
>> request has timed out) can be seen.
>> - The process instance is never informed of the failure. The setting of 
>> faultOnFailure and/or installing fault handlers inside the Invoke or for the 
>> surrounding scope don't help setting the process instance to failed state.
>>
>> Does anybody know if there is a way to handle this case properly?
>>
>> Any help is appreciated.
>>
>> Uwe
>>
>>
>>
>
>
>


Reply via email to