You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Alexis Midon (JIRA)" <ji...@apache.org> on 2009/04/15 02:00:15 UTC

[jira] Commented: (ODE-578) Better error reporting for WS clients

    [ 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$ResponseFuture@e8b20a
> timed out when waiting for a response!
> java.util.concurrent.TimeoutException: Message exchange
> org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl$ResponseFuture@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.