[
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.