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 >> >> >> > > >
