ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexis Midon (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (ODE-578) Better error reporting for WS clients
Date Wed, 15 Apr 2009 00:02:14 GMT

    [ https://issues.apache.org/jira/browse/ODE-578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12698989#action_12698989
] 

Alexis Midon edited comment on ODE-578 at 4/14/09 5:00 PM:
-----------------------------------------------------------

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
xmlns:soapenv="http://incubator.apache.org/ode"><faultcode>soapenv:Fault</faultcode><faultstring>Message
exchange failure due to: The service cannot be found for the endpoint reference (EPR) 127.0.0.1/processes/DummyService</faultstring><detail><Fault
xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><faultcode
xmlns="">soapenv:Client</faultcode><faultstring xmlns="">The service cannot
be found for the endpoint reference (EPR) 127.0.0.1/processes/DummyService</faultstring><detail
xmlns=""><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></Fault></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>




      was (Author: alexismidon):
    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.


Mime
View raw message