[ https://issues.apache.org/jira/browse/ODE-578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12698989#action_12698989 ]
Alexis Midon commented on ODE-578: ---------------------------------- Now, in case of failure, the details passed to MessageExchangeImpl#setFailure are persisted in a message. In addition, BpelRuntimeContextImpl#registerActivityForRecovery releases all outstanding MyRoleMessageExchange and pass them the failure information received from ACTIVITYGUARD. Finally axis2.OdeService builds a fault based on the failure informaiton and send it to the WS client. For instance, if an invoke fails, the client will received a fault like: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode><faultstring>The service cannot be found for the endpoint reference (EPR) 127.0.0.1/processes/DummyService</faultstring><detail><Exception>org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (EPR) 127.0.0.1/processes/DummyService at org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:62) at org.apache.axis2.engine.Phase.invoke(Phase.java:308) at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) at org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:256) at org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:259) at org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:166) at org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:85) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:987) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:528) at java.lang.Thread.run(Thread.java:595) </Exception></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> The details can be muted by setting the new endpoint property 'mex.failure.verbose' to false. If false, the returned fault becomes: <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:soapenv="http://incubator.apache.org/ode"><faultcode>soapenv:Fault</faultcode><faultstring>Message exchange failure</faultstring><detail><Exception>org.apache.ode.axis2.OdeFault: Message exchange failure </Exception></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> > Better error reporting for WS clients > ------------------------------------- > > Key: ODE-578 > URL: https://issues.apache.org/jira/browse/ODE-578 > Project: ODE > Issue Type: Improvement > Reporter: Alexis Midon > Assignee: Alexis Midon > Fix For: 1.3.1, 2.0 > > > Currently, when a process is called and some error happens during processing, > the error is not communicated back to the client. Instead, all the client > gets is a timeout exception which can be confusing. > Here is an example: > 2009-03-05 19:30:06,873 ERROR [org.apache.ode.axis2.ODEService] Timeout or > execution error when waiting for response to MEX {MyRoleMex#632 [Client > 96038a45-1409-4bda-ab33-81fd29de4a48-3] calling > {http://www.intalio.com/bpms/workflow/ib4p_20051115}UIFWService.completeTask(...)} > java.util.concurrent.TimeoutException: Message exchange > org.apache.ode.bpel.engine.myrolemessageexchangeimpl$responsefut...@e8b20a > timed out when waiting for a response! > java.util.concurrent.TimeoutException: Message exchange > org.apache.ode.bpel.engine.myrolemessageexchangeimpl$responsefut...@e8b20a > timed out when waiting for a response! > at > org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl$ResponseFuture.get(MyRoleMessageExchangeImpl.java:241) > at > org.apache.ode.axis2.ODEService.onAxisMessageExchange(ODEService.java:152) > at > org.apache.ode.axis2.hooks.ODEMessageReceiver.invokeBusinessLogic(ODEMessageReceiver.java:67) > at > org.apache.ode.axis2.hooks.ODEMessageReceiver.invokeBusinessLogic(ODEMessageReceiver.java:50) > at > org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145) > The proposal is to report back to the client any error during processing of > the request (by default). This feature could be turned off for security > reasons since it may create a risk of information disclosure. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.