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.RETRY_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=introsrchcashback