2015-03-31 1 views
0

Я использую клиент restlet для отправки запроса покоя на сервер.Как ускорить загрузку клиента, чтобы получить ответ?

public class RestHandler { 
    protected ClientResource resource  = null; 
    protected Client   client   = null; 

    public void connect(final String address, 
         final Protocol protocol){ 
     final Context context = new Context(); 
     if (client == null) { 
      logger.info("Create Client."); 
      client = new Client(context, protocol); 
     } 
     resource = new ClientResource(context, new Reference(protocol, address)); 
     resource.setNext(client); 
     resource.setEntityBuffering(true); 
    } 
} 

В своем классе child используйте ресурс.get()/post/put/delete для отправки запроса на отдых.

Я обнаружил, что ответ возвращается так медленно в первый раз (5-10 с).

И затем он идет быстрее в следующих нескольких запросах.

Но после ожидания около 10 минут я снова отправлю запрос, он снова станет медленным.

Есть ли способ сделать ответ быстрее?

+0

Вы уверены, что Restlets являются здесь проблемой? –

+0

Гораздо быстрее использовать браузер Firefox для отправки запроса на отдых. Поэтому я думаю, что может быть какой-то способ ускорить работу с рестальтирующим клиентом. – Sandy

+0

. Зависимость от Broswer очень похожа на проблему JavaScript AJAX, а не на серверную и Restlets. –

ответ

0

Вы можете попробовать использовать другой клиентский разъем. Это может быть причиной вашей проблемы, особенно если вы используете по умолчанию. Обратите внимание, что значение по умолчанию должно использоваться только для разработки.

На этой странице представлены все доступные клиентские соединители: http://restlet.com/technical-resources/restlet-framework/guide/2.3/core/base/connectors.

Что касается клиентских соединителей, вы можете настроить свойства для их настройки. Чтобы использовать клиентский коннектор, просто поместите соответствующее расширение Restlet в свой путь к классам. Возможно, вы можете попробовать с расширением org.restlet.ext.httpclient.

Этот ответ может помочь вам в отношении конфигурации и свойств разъема: Restlet HTTP Connection Pool.

Надеется, что это помогает, Тьерри

+0

Большое спасибо. Я добавляю org.restlet.ext.httpclient.jar в classpath. Но нет класса HttpClient, только HttpClientHelper. Как использовать его для создания клиента apach http? – Sandy

+0

Добро пожаловать! Фактически, никакого влияния на код, который вы использовали. Коннектор клиента регистрируется под капотом самим Restlet. Если вы хотите быть уверенным, что это так, просто посмотрите на список соединителей клиента из 'Engine.getInstance(). GetRegisteredClients()'. Вы увидите одно из расширения 'org.restlet.ext.httpclient'. Если вы хотите передать параметры для его настройки, просто используйте контекст, используемый как параметр во время создания клиента. Надеюсь, это поможет вам. –