Log a jira please.

On 10/3/11 10:24 AM, Sandeep Tikoo wrote:
> Hi,
>
> I am using RestEasy on the client side (version 2.2.1.GA) . I have a
> requirement to try a secondary endpoint (host) if the request to the
> primary endpoint fails (in case it is down). I thought about
> implementing a
> org.jboss.resteasy.spi.interception.ClientExecutionInterceptor which
> checks for unsuccessful call to the primary endpoint, changes the URI of
> the request to the secondary endpoint using ClientResponse.overrideUri()
> and then reissue the request.
>
> It did not work, it seems that calling ClientResponse.overrideUri() is
> in effect a NOP. Even though ClientResponse.overrideURI() changes the
> internal URIBuilder, internally ClientResponse caches the URI in a
> protected field ‘finalURI’ and when ClientResponse.getURI() is invoked
> by RestEasy, to make the Http call, it reuses the old value of the URI.
>
> In eclipse debugger, after calling overrideURI, if I set finalURI to
> null, everything works as expected for me – the exact same REST call is
> issued but now against the secondary endpoint that I specified using
> ClientResponse.overrideURI()
>
> I am not sure if ClientResponse.overrideUri() is working as designed
> (there is no javadoc and I have not been able to find any information in
> JIRA or the forums) or if this is a bug which can be fixed by setting
> this.finalURI to null in ClientResponse.overrideUri().
>
> Also providing snippet of the code I am trying, just in case it helps
> clarify my question.
>
> Thanks for your help.
>
> Sandeep.
>
> *public**class*RetryOnErrorInterceptor
> *implements*ClientExecutionInterceptor {
>
> …
>
> …
>
> @Override
>
> *public*ClientResponse<?> execute(*final*ClientExecutionContext context)
> *throws*Exception
>
> {
>
> ClientResponse<?> response = *null*;
>
> *try*
>
> {
>
> response = context.proceed();
>
> } *catch*(UnknownHostException uhe)
>
> {
>
> response = executeAgain(context, response);
>
> } *catch*(SocketTimeoutException ste)
>
> {
>
> response = executeAgain(context, response);
>
> } *catch*(Exception ex)
>
> {
>
> *throw**new*RestClientException(
>
> "This seemed like an unrecoverable exception so no retry to a different
> endpoint is going to be attempted.",
>
> ex);
>
> }
>
> *if*(*this*.isErrorResponseReceived(response.getStatus()))
>
> {
>
> response = executeAgain(context, response);
>
> }
>
> *return*response;
>
> }
>
> *private*ClientResponse<?> executeAgain(*final*ClientExecutionContext
> context, *final*ClientResponse<?> response)
>
> *throws*Exception
>
> {
>
> *if*(response != *null*)
>
> {
>
> response.releaseConnection();
>
> }
>
> ClientRequest request = context.getRequest();
>
> String uriStr = request.getUri();
>
> URI uri = *new*URI(uriStr);
>
> URI endPointURI = *new*URI(*this*.config.getEndPoint1());
>
> URI retryURI = *new*URI(
>
> endPointURI.getScheme(),
>
> endPointURI.getAuthority(),
>
> uri.getPath(),
>
> uri.getQuery(),
>
> uri.getFragment());
>
> request.overrideUri(retryURI);
>
> *return*context.proceed();
>
> }
>
> …
>
> …
>
> }
>
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure contains a
> definitive record of customers, application performance, security
> threats, fraudulent activity and more. Splunk takes this data and makes
> sense of it. Business sense. IT sense. Common sense.
> http://p.sf.net/sfu/splunk-d2dcopy1
>
>
>
> _______________________________________________
> Resteasy-users mailing list
> Resteasy-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/resteasy-users

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to