[ https://issues.apache.org/jira/browse/ODE-256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12586264#action_12586264
]
Alexey Ousov commented on ODE-256:
----------------------------------
Uhm, NPE was fixed on 1.1 branch, but BPEL process still don't work as it expected...
I have BPEL process which calls other axis2 services written in java via <invoke> activity.
BPEL process also has fault handler "Catch All" and returns fault to the client in case of
internal or external faults. Well, when BPEL process throws fault by itself with <throw>
activity everything works fine and client gets exception, but when axis2 service throws fault
it is not working fine in 1.1 branch too (exception is not caught by "Catch All" handler,
and client still gets timeout exception).
I made some log using "ode-axis2.event.listeners" property and axis2 phase handler, hope it
looks understandable.
> NPE when external SOAP service returns fault not listed in its wsdl
> -------------------------------------------------------------------
>
> Key: ODE-256
> URL: https://issues.apache.org/jira/browse/ODE-256
> Project: ODE
> Issue Type: Bug
> Components: BPEL Runtime
> Affects Versions: 1.1.1, 1.2
> Environment: Windows XP Pro, JDK 1.5.0.07, Oracle 10g XE, Apache Tomcat 5.5.25,
OpenJPA
> Reporter: Alexey Ousov
> Fix For: 1.2
>
>
> 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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|