Hi Sanjay,

This is indeed a better way to go for this feature until we add support for
this at the Restlet API directly. 

I've just added a "retryHandler" parameter to the Apache HTTP client
connector that can contain a class name to instantiate and set as the retry
handler. It will be automatically detected and used by the client. 

Changes checked in SVN trunk. Let me know if it works for you.

Best regards,
Jerome


-----Message d'origine-----
De : Sanjay Acharya [mailto:[EMAIL PROTECTED] 
Envoyé : mardi 24 juin 2008 23:47
À : [email protected]
Objet : RE: Setting HttpClient IOException Retry


Another solution to make this work:
     
client.getContext().getParameters().add(HttpMethodParams.RETRY_HANDLER,
        "CustomHttpClientConverter");

with CustomHttpClientConverter being:

class CustomHttpClientConverter extends HttpClientConverter {

  public CustomHttpClientConverter(Context context) {
    super(context);
  }

  @Override public HttpClientCall toSpecific(HttpClientHelper client,
Request request) {
    HttpClientCall clientCall = super.toSpecific(client, request);
    if (clientCall instanceof HttpMethodCall) {
      HttpMethodCall httpMethodCall = (HttpMethodCall) clientCall;
 
httpMethodCall.getHttpMethod().getParams().setParameter(HttpMethodParams.RET
RY_HANDLER,
        new CustomRetryHandler());
    }

    return clientCall;
  }
}

I could use either of the two implementations. However, from a compatibility
perspective moving forward with versions of the Rest Framework, I am leaning
toward the above solution. Any suggestions with a different solution or
preferred direction would be highly appreciated.

Thanks,
Sanjay
----------------------------------------
> From: [EMAIL PROTECTED]
> To: [email protected]
> Date: Tue, 24 Jun 2008 18:17:50 +0000
> Subject: RE: Setting HttpClient IOException Retry
> 
> 
> I have a solution that sort of works but I am not sure that is the best
way of accomplishing this. Hoping this to be a simple work around until the
issue 356  is resolved. Not very clean and would like any other suggestions
if possible:
> 
> A Custom Engine:
> public class CustomEngine extends com.noelios.restlet.Engine {
> 
>   public CustomEngine() {
>     super();
>   }
> 
>   /**
>    * If the Helper is an instance of HttpClientHelper, then override
>    * to provide our custom helper. Otherwise, return the constructed
helper.
>    *
>    * @return a Helper
>    */
>   @Override public Helper createHelper(Client client) {
> 
>     Helper helper = super.createHelper(client);
>     if (helper instanceof HttpClientHelper) {
> 
>       // override to provide Custom Helper
>       return new ExtendedHttpClientHelper(client);
>     }
> 
>     return helper;
>   }
> }
> 
> // A Custom Helper
> public class ExtendedHttpClientHelper extends HttpClientHelper {
> 
>   public ExtendedHttpClientHelper(Client client) {
>     super(client);
>   }
>   
>   /**
>    * Populate Created Request with CustomRetryHandler
>    */
>   @Override public HttpClientCall create(Request request) {
>     HttpMethodCall httpMethodCall = (HttpMethodCall)
super.create(request);
> 
>
httpMethodCall.getHttpMethod().getParams().setParameter(HttpMethodParams.RET
RY_HANDLER,
>       new CustomRetryHandler());
> 
>     return httpMethodCall;
>   }
> }
> 
> public class CustomRetryHandler implements HttpMethodRetryHandler {
>   private int retryCount;
> 
>   private static int MAX_TRIES = 2;
> 
>   public boolean retryMethod(HttpMethod arg0, IOException arg1, int arg2)
{
> 
>     if (retryCount < MAX_TRIES) {
>       retryCount++;
>       return true;
>     }
> 
>     return false;
>   }
> }
> 
> An then in my code, I setup the custom engine using:
> 
>  org.restlet.util.Engine.setInstance(new CustomEngine());
> 
> Any suggestions for Betterment would be greately appreciated.
> ----------------------------------------
>> From: [EMAIL PROTECTED]
>> To: [email protected]
>> Date: Tue, 24 Jun 2008 16:47:27 +0000
>> Subject: RE: Setting HttpClient IOException Retry
>> 
>> 
>> Additionally, I believe there is an open issue related to this
configuration, http://restlet.tigris.org/issues/show_bug.cgi?id=356
>> 
>> Any suggestions to how this parameter might be easily configured while
the issue is addressed would be welcomed.
>> 
>> Thanks again,
>> Sanjay
>> ----------------------------------------
>>> From: [EMAIL PROTECTED]
>>> To: [email protected]
>>> Date: Tue, 24 Jun 2008 16:18:20 +0000
>>> Subject: Setting HttpClient IOException Retry
>>> 
>>> 
>>> Hi,
>>> 
>>> I am hoping to be able to configure the org.apache.commons.HttpClient's
method retry handler to change the max number of times the HttpClient will
attempt to retry connecting when there is an IOException.The Restlet
HttpClientHelper, I believe does not support this configuration to the
underlying HttpClient. Any suggestions on the best way to set the Retry
Handler without explicit casting of Helper and getting the HttpClient there
in?
>>> 
>>> Additionally, any suggestions on how to simulate an IOException from a
Restlet so that the retry can be validated would be appreciated. Is there a
Status that I can set that will result in an IOException in the HttpClient?
>>> 
>>>  component.getDefaultHost().attach(new Restlet(component.getContext()){
>>>         @Override public void handle(Request request, Response
response){
>>> 
>>>           response.setEntity(new StringRepresentation("Hello World"));
>>> 
>>>         }
>>>     });
>>> 
>>> Thanks much.
>>> Sanjay
>>> _________________________________________________________________
>>> Need to know now? Get instant answers with Windows Live Messenger.
>>>
http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL
_Refresh_messenger_062008
>> 
>> _________________________________________________________________
>> The i’m Talkathon starts 6/24/08.  For now, give amongst yourselves.
>> http://www.imtalkathon.com?source=TXT_EML_WLH_LearnMore_GiveAmongst
> 
> _________________________________________________________________
> Introducing Live Search cashback .  It's search that pays you back!
>
http://search.live.com/cashback/?&pkw=form=MIJAAF/publ=HMTGL/crea=introsrchc
ashback

_________________________________________________________________
Need to know now? Get instant answers with Windows Live Messenger.
http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL
_Refresh_messenger_062008=

Reply via email to