ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Waruna Ranasinghe <waruna...@gmail.com>
Subject Re: Capture Soap Fault in Invoke
Date Thu, 11 Aug 2011 11:34:36 GMT
Hi Jorge,



On 11 August 2011 23:04, George <george.news@gmx.net> 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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message