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"