Hi Jorge,
On 11 August 2011 23:04, George <[email protected]> wrote: > Hi all, > > I'm trying to capture a custom Soap Fault returned from an invoke activity. > > I have successfully capture the exceptions lauched when the remote service > is unavailable by using <ext:failureHandling>. However now the problem is > different. > > My remote service is a function like this: > public void sendMyServiceException(int i) throws MyServiceException > > When I call it using SoapUI I get the exception soap xml code: > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/ > "> > <soapenv:Body> > <soapenv:Fault> > <faultcode>soapenv:Server</faultcode> > <faultstring>unknown</faultstring> > <detail> > <ns:ServiceEmulatorMyServiceException > xmlns:ns="http://serviceemulator.mydomain.com"> > <MyServiceException xsi:type="ax21:MyServiceException" > xmlns="http://serviceemulator.mydomain.com" > xmlns:ax21="http://serviceemulator.mydomain.com/xsd" > xmlns:ax23="http://io.java/xsd" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > <ax21:code>1</ax21:code> > <ax21:subcode>2</ax21:subcode> > </MyServiceException> > </ns:ServiceEmulatorMyServiceException> > </detail> > </soapenv:Fault> > </soapenv:Body> > </soapenv:Envelope> > > > However in my BPEL process I'm not able to see it. The BPEL code for this > part is: > <bpel:invoke name="InvokeException" partnerLink="ServiceEmulatorPL" > operation="sendMyServiceException" > portType="srvemu:ServiceEmulatorPortType" > inputVariable="ServiceEmulatorPLSendMyServiceExceptionRequest" > > > According the configuration of the above invoke activity, the operation "sendMyServiceException" is a one-way (in-only) operation. Therefore the BPEL process does not expect any response or even and soap fault as a response. Thanks, Waruna > > <ext:failureHandling xmlns:ext="http://ode.apache.org/activityRecovery"> > <ext:faultOnFailure>false</ext:faultOnFailure> > </ext:failureHandling> > > <bpel:catchAll> > <bpel:sequence> > <!-- Assign data to variable output from invoke PingPongPLResponse --> > <bpel:assign validate="no" name="AssignIteratorInCaseOfError"> > <bpel:copy> > <bpel:from> > <bpel:literal>0</bpel:literal> > </bpel:from> > <bpel:to> > $iterator > </bpel:to> > </bpel:copy> > </bpel:assign> > </bpel:sequence> > </bpel:catchAll> > </bpel:invoke> > > I use catchAll to capture everything but I don't get any error, that is, > the variable $iterator is not modified and still stores the same value as > the one assigned before. I have tried with faultOnFailure set to true and > false and no difference. > > When analizing the logs it seems that after ODE engine makes the call to > the remote WS it directly returns without displaying anything on the log > about the soap fault. When using a IN/OUT call I get both the request and > response on a correct execution displayed on the log, but in this case only > with IN and Exception, I only get the request. > > Any help. I would really appreaciate it. > > TA > Jorge > > > -- ----------------------------------------------------- Regards, Waruna Ranasinghe mob: 0724318285 blog: http://warunapw.blogspot.com twitter: http://twitter.com/warunapww http://lk.linkedin.com/in/waruna www.facebook.com/waruna.ranasinghe
