[
https://issues.apache.org/jira/browse/ARIES-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Amichai Rothman resolved ARIES-2113.
------------------------------------
Fix Version/s: rsa-2.0.0
Resolution: Fixed
> TCP provider doesn't distinguish returned value from thrown exceptions
> ----------------------------------------------------------------------
>
> Key: ARIES-2113
> URL: https://issues.apache.org/jira/browse/ARIES-2113
> Project: Aries
> Issue Type: Bug
> Components: Remote Service Admin
> Affects Versions: rsa-1.16.1
> Reporter: Amichai Rothman
> Priority: Major
> Fix For: rsa-2.0.0
>
>
> The TCP provider currently returns a single object from the remote
> invocation, which can be either the result object or an exception. While this
> works in most cases, it is technically incorrect since a method can return an
> exception object without throwing it so the two cases should be treated
> differently. It should return both an exception (which is rethrown if not
> null) and the result object (which is returned to caller normally even if it
> is a Throwable).
> Furthermore, when an exception is thrown/returned, there is ambiguity between
> an exception thrown by the invoked method implementation itself (which should
> be thrown transparently to the caller) and those caused by the provider (bugs
> or otherwise which should probably be remote ServiceExceptions). A simple
> solution is to always wrap method implementation exceptions in an
> InvocationTargetException (as invoke already does but the async result
> resolution does not) and other provider exceptions (explicit or implicit)
> thrown as-is. The receiver can then distinguish the two and process them
> differently if necessary.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)