ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Horwitz" <mike.horw...@gmail.com>
Subject Problem with Catch statement on an Invoke
Date Tue, 05 Jun 2007 15:17:04 GMT

I am trying to write a process to deploy on Ode 1.0 running inside
ServiceMix. All was going fine until I tried to add a catch clause to an
invoke in the process. The process compiles fine, just the catch clause gets
ignored and the fault is thrown out of the service. If I copy and paste the
catch clause to the <faultHandlers> section on the process, then all works
as expected.

First the snippet from the wsdl service declaring the fault:

<wsdl:portType name="marketbus">
  <wsdl:operation name="getRecord">
  <wsdl:input message="tns:getRecordRequest"/>
  <wsdl:output message="tns:getRecordResponse"/>
    <wsdl:fault name="noRecordFault"

Now the snippet from the bpel service:

<bpws:invoke inputVariable="recordRequest" name="invokeMarketBus"
operation="getRecord" outputVariable="recordResponse"
partnerLink="marketbusClient" portType="ns1:marketbus">
  <bpws:catch faultName="ns1:noRecordFault">
    <bpws:sequence name="HiddenSequence">
      <bpws:assign name="buildFaultMessage" validate="no">
            <bpws:literal>No such message.</bpws:literal>
      <bpws:invoke inputVariable="echoRequest" name="invokeEchoService"
operation="echoMessage" partnerLink="echoClient"

And the debug output from the Ode engine (snippet):

DEBUG - BpelProcess                    - InvokeResponse event for iid 20
DEBUG - BpelRuntimeContextImpl         - Invoking message response for mexid
4611686018427387948 and channel 20
DEBUG - JacobVPU                       - injecting
DEBUG - BpelRuntimeContextImpl         - Triggering response
DEBUG - SCOPE                          - ({OScope 'invokeMarketBus'
id=50},TerminationChannel#14,ParentScopeChannel#16): has
a fault handler for {http://abnamro.com/sc}noRecordFault: {OCatch
faultName=null, faultVariable=null}
DEBUG - SCOPE                          - ({OCatch faultName=null,
nnel:FH#22): has no fault handler for {http://abnamro.com/sc}noRecordFault;
scope will propagate FAULT!
DEBUG - SCOPE                          - ({OScope
'__PROCESS_SCOPE:algotf-bpe' id=3},TerminationChannel#1,ParentScopeChannel#
2): has no fault handler for {http://abnamro.com/sc}noRecordFault; scope
will propagate FAULT!
DEBUG - BpelProcess                    - ProcessImpl completed with fault '{
DEBUG - ProcessDaoImpl                 - Removing completed process instance
20 from in-memory store.
DEBUG - OdeService                     - Consuming MEX tracker
WARN  - OdeService                     - Ignoring unknown async reply:
{MyRoleMex#4611686018427387947 [Client ID:gbws-0006534
3-3167-1181051426187-7:20] calling {
DEBUG - QuartzSchedulerImpl            - Commiting transaction.

Exactly the same catch statement (copied and pasted) works as expected if
placed in the <faultHandlers> section of the process.

I am reasonably new to BPEL, so may have missed something?


Mike Horwitz

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