Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.1.1, 1.2
-
None
-
Windows XP Pro, JDK 1.5.0.07, Oracle 10g XE, Apache Tomcat 5.5.25, OpenJPA
Description
Often, if axis2 based java service don't list any fault(s) in its wsdl, and throws RuntimeException, axis2 tranlates it to soapenv:Server standard fault. ODE BPEL runtime is not able to catch such failures (neither version 1.1.1 nor -trunk), there is just NPE happens, transaction is abandoned and client receives timeout exception. Here is a stack trace for -trunk version:
java.lang.NullPointerException
at org.apache.ode.axis2.ExternalService.reply(ExternalService.java:299)
at org.apache.ode.axis2.ExternalService.invoke(ExternalService.java:152)
at org.apache.ode.axis2.MessageExchangeContextImpl.invokePartnerUnreliable(MessageExchangeContextImpl.java:67)
at org.apache.ode.bpel.engine.PartnerLinkPartnerRoleImpl$UnreliableInvoker.run(PartnerLinkPartnerRoleImpl.java:339)
at org.apache.ode.bpel.engine.BpelProcess$ProcessRunnable.run(BpelProcess.java:1123)
at org.apache.ode.bpel.engine.BpelServerImpl$ServerRunnable.run(BpelServerImpl.java:793)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
This happens, because odeMex.getOperation().getFault(nonNullFT.getLocalPart()) returns null in this case.