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