Я застреваю, настраивая Restlet для моего клиентского кода. Я использую Restlet 2 и HttpClient 4. Я добавил дополнительную банку и банки HttpClient к пути сборки, и это, кажется, работает.
Однако я не знаю, как настроить его подробно. Я не создаю клиента вручную, вместо этого я использую ClientResource
s для взаимодействий, который является единственной частью, где я использую Restlet непосредственно. Конкретное инстанцирование клиентов, кажется, скрыто в реализации платформы. Я нашел некоторые подсказки, как я мог бы настроить клиенты, но они все были записаны для Restlet 1.x.
Подробно, я хочу настроить следующие части:
clientResource.getClientInfo().setAgent(…)
не работает. ClientResource
, который не действительно эффективен.Конечно, я уже взглянул на HttpClientHelper, но я не знаю, где и как добавить это. Уже искавший документация это, но никакие хиты.
Спасибо за справку!
Во-первых, чтобы убедиться, что Restlet использует Apache HttpClient для соединений, вам необходимо иметь org.restlet.ext.httpclient.jar в пути к классам. Во-вторых, вы передаете Контекст
в конструктор вашего ClientResource
? В противном случае вам потребуется:
final Context context = new Context();
context.getParameters().set("maxConnectionsPerHost", "20");
final ClientResource requestResource = new ClientResource(context, "http://localhost:8182/request");
requestResource.getClientInfo().setAgent("Example-Client/1.0");
Это позаботится об интересующей вас настройке maxConnectionsPerHost
. Кроме того, вызов setAgent
работал, как и ожидалось, для меня. Я не уверен, в чем может быть проблема в вашем случае.
Что касается постоянных подключений, похоже, HttpClient позаботится об этом за вас. Restlet использует HttpClient ThreadSafeClientConnManager
, описанный здесь . По этой ссылке упоминается поддержка постоянных подключений. Кажется, что этот объект также позаботится о ваших проблемах с объединением. Вы можете повторно использовать тот же экземпляр ClientResource
, чтобы воспользоваться этим. Мне не сразу известно о политике безопасности потоков ClientResource
, но я надеюсь, что она безопасна для потоков.