[
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:07 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 receive 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
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>
> 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.