I deployed a BPEL which tests SOAP Header support and sent a request without
the SOAP Header part.

In that case following exception thrown:

[2009-04-21 11:32:42,386] FATAL -  Message missing part: header
{org.apache.ode.bpel.rtrep.v2.PICK}
[2009-04-21 11:32:42,389] ERROR -  Method "onRequestRcvd" in class
"org.apache.ode.bpel.rtrep.v2.PICK$WAITING$2" threw an unexpected exception.
{org.apache.ode.jacob.vpu.JacobVPU}
org.apache.ode.bpel.rtrep.v2.InvalidContextException: Message missing part:
header
    at org.apache.ode.bpel.rtrep.v2.PICK.initVariable(PICK.java:190)
    at org.apache.ode.bpel.rtrep.v2.PICK.access$400(PICK.java:47)
    at
org.apache.ode.bpel.rtrep.v2.PICK$WAITING$2.onRequestRcvd(PICK.java:270)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
    at
org.apache.ode.bpel.rtrep.v2.RuntimeInstanceImpl.execute(RuntimeInstanceImpl.java:639)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:616)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.executeCreateInstance(BpelRuntimeContextImpl.java:604)
....
[2009-04-21 11:32:42,391] ERROR -  Work for instance {
http://dfa.com/test}newProcess-2#501 in thread
Thread[ODEServerImpl-1,5,main] resulted in an exception.
{org.apache.ode.bpel.engine.BpelInstanceWorker}
java.lang.RuntimeException:
org.apache.ode.bpel.rtrep.v2.InvalidContextException: Message missing part:
header
    at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464)
    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
    at
org.apache.ode.bpel.rtrep.v2.RuntimeInstanceImpl.execute(RuntimeInstanceImpl.java:639)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:616)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.executeCreateInstance(BpelRuntimeContextImpl.java:604)
  ...

I was able to fix the time out error by catching the BpelEngineException
inside ODEProcess.invokeProcess method and sending back a SOAP Fault with
exception message.

But the problem is event there is a error in the incoming message, there is
a instance created for this message and that instance is in ACTIVE state. In
case of situation like this, I think the created instance must in error or
failed state. And also in current ODE trunk we are not sending SOAP Fault if
there is BpelEngineException. I think we need to send a soap fault when
BpelEngineException occur. WDYT?

Thanks,
Milinda

-- 
http://mpathirage.com
http://wso2.org "Oxygen for Web Service Developers"
http://wsaxc.blogspot.com "Web Services With Axis2/C"

Reply via email to