|
In a BPEL service, when trying to handle SOAP faults from a external WS endpoint via SOAP reference binding the process gets NPE and fails to handle them correctly.
To reproduce the issue, pick up the bpel-service/loan_approval quickstart and change the riskAssessor reference from an internal component service to a promoted reference to an external WS endpoint. Then the fault handler defined in the loan_approval.bpel starts to fail with the following error:
12:06:08,157 ERROR [org.apache.ode.jacob.vpu.JacobVPU] (ODEServer-1) Method "run" in class "org.apache.ode.bpel.runtime.INVOKE" threw an unexpected exception.: org.apache.ode.bpel.iapi.ContextException: Failed to invoke external service
at org.riftsaw.engine.internal.MessageExchangeContextImpl.invokePartnerUnreliable(MessageExchangeContextImpl.java:151) [engine-3.0.0.Final-redhat-8.jar:3.0.0.Final-redhat-8]
at org.riftsaw.engine.internal.MessageExchangeContextImpl.invokePartner(MessageExchangeContextImpl.java:195) [engine-3.0.0.Final-redhat-8.jar:3.0.0.Final-redhat-8]
at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeContextImpl.java:951) [riftsaw-bpel-runtime-3.0.0.Final-redhat-8.jar:3.0.0.Final-redhat-8]
(snip)
Caused by: org.switchyard.HandlerException: java.lang.NullPointerException
at org.switchyard.bus.camel.processors.ErrorHandlingProcessor.detectHandlerException(ErrorHandlingProcessor.java:62) [switchyard-bus-camel-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.switchyard.bus.camel.processors.ErrorHandlingProcessor.process(ErrorHandlingProcessor.java:48) [switchyard-bus-camel-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) [camel-core-2.10.0.redhat-60024.jar:2.10.0.redhat-60024]
(snip)
Caused by: java.lang.NullPointerException
at com.sun.xml.messaging.saaj.soap.impl.ElementImpl.addTextNode(ElementImpl.java:455)
at com.sun.xml.messaging.saaj.soap.ver1_1.Fault1_1Impl.setFaultString(Fault1_1Impl.java:170)
at com.sun.xml.messaging.saaj.soap.impl.BodyImpl.addFault(BodyImpl.java:133)
at org.switchyard.component.soap.util.SOAPUtil.generateFault(SOAPUtil.java:468) [switchyard-component-soap-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.switchyard.component.soap.util.SOAPUtil.generateSOAP11Fault(SOAPUtil.java:441) [switchyard-component-soap-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.switchyard.component.soap.util.SOAPUtil.generateFault(SOAPUtil.java:428) [switchyard-component-soap-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.switchyard.component.soap.OutboundHandler.invokeService(OutboundHandler.java:332) [switchyard-component-soap-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.switchyard.component.soap.OutboundHandler.handleMessage(OutboundHandler.java:273) [switchyard-component-soap-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.switchyard.bus.camel.processors.ProviderProcessor.process(ProviderProcessor.java:29) [switchyard-bus-camel-1.1.1-p5-redhat-1.jar:1.1.1-p5-redhat-1]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) [camel-core-2.10.0.redhat-60024.jar:2.10.0.redhat-60024]
(snip)
|